C'était la première fois que j'apprenais la technologie des robots d'exploration. J'ai lu une blague sur Zhihu sur la façon d'explorer l'Encyclopédie des choses embarrassantes, alors j'ai décidé d'en créer une moi-même.
Atteignez vos objectifs : 1. Accédez aux blagues de l'Encyclopédie des choses embarrassantes
2. Parcourez un paragraphe à la fois et passez à la page suivante chaque fois que vous appuyez sur Entrée
Implémentation technique : basée sur l'implémentation de python, en utilisant la bibliothèque Requests, la bibliothèque re et la méthode BeautifulSoup de la bibliothèque bs4 pour implémenter
Contenu principal : Tout d'abord, nous devons Clarifions les idées d'implémentation de l'exploration, construisons le corps principalframework. Dans la première étape, nous écrivons d'abord une méthode pour obtenir des pages Web à l'aide de la bibliothèque Requests. Dans la deuxième étape, nous utilisons la méthode BeautifulSoup de la bibliothèque bs4 pour analyser les informations obtenues sur la page Web et utiliser des expressions régulières. pour correspondre aux informations du paragraphe pertinent. La troisième étape consiste à imprimer les informations obtenues. Nous exécutons tous les méthodes ci-dessus via une fonction principale .
1. Tout d'abord, importez les bibliothèques pertinentes
import requests from bs4 import BeautifulSoup import bs4 import re
2. Tout d'abord, obtenez les informations de la page Web
def getHTMLText(url): try: user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent': user_agent} r = requests.get(url,headers = headers) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return ""
3. analysez-le
soup = BeautifulSoup(html,"html.parser")
Ce dont nous avons besoin, c'est du contenu et de l'éditeur de la blague. En consultant le code source sur la page Web, nous savons que l'éditeur de la blague est :
'p', attrs={'class': 'content'}中
'p', attrs={'class': 'author clearfix'}中
def fillUnivlist(lis,li,html,count): soup = BeautifulSoup(html,"html.parser") try: a = soup.find_all('p', attrs={'class': 'content'}) ll = soup.find_all('p', attrs={'class': 'author clearfix'})
for sp in a: patten = re.compile(r'<span>(.*?)</span>',re.S) Info = re.findall(patten,str(sp)) lis.append(Info) count = count + 1 for mc in ll: namePatten = re.compile(r'<h2>(.*?)</h2>', re.S) d = re.findall(namePatten, str(mc)) li.append(d)
.
Ensuite, il suffit d'ajouter 2. Il suffit de combiner le contenu des listes et de les afficherdef printUnivlist(lis,li,count): for i in range(count): a = li[i][0] b = lis[i][0] print ("%s:"%a+"%s"%b)
def input_enter(): input1 = input() if input1 == 'Q': return False else: return True
boucle for pour charger la page suivante.
def main(): passage = 0 enable = True for i in range(20): mc = input_enter() if mc==True: lit = [] li = [] count = 0 passage = passage + 1 qbpassage = passage print(qbpassage) url = 'http://www.qiushibaike.com/8hr/page/' + str(qbpassage) + '/?s=4966318' a = getHTMLText(url) fillUnivlist(lit, li, a, count) number = fillUnivlist(lit, li, a, count) printUnivlist(lit, li, number) else: break
Voici le code source :
import requests from bs4 import BeautifulSoup import bs4 import re def getHTMLText(url): try: user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent': user_agent} r = requests.get(url,headers = headers) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" def fillUnivlist(lis,li,html,count): soup = BeautifulSoup(html,"html.parser") try: a = soup.find_all('p', attrs={'class': 'content'}) ll = soup.find_all('p', attrs={'class': 'author clearfix'}) for sp in a: patten = re.compile(r'(.*?)',re.S) Info = re.findall(patten,str(sp)) lis.append(Info) count = count + 1 for mc in ll: namePatten = re.compile(r'(.*?)
', re.S) d = re.findall(namePatten, str(mc)) li.append(d) except: return "" return count def printUnivlist(lis,li,count): for i in range(count): a = li[i][0] b = lis[i][0] print ("%s:"%a+"%s"%b) def input_enter(): input1 = input() if input1 == 'Q': return False else: return True def main(): passage = 0 enable = True for i in range(20): mc = input_enter() if mc==True: lit = [] li = [] count = 0 passage = passage + 1 qbpassage = passage print(qbpassage) url = 'http://www.qiushibaike.com/8hr/page/' + str(qbpassage) + '/?s=4966318' a = getHTMLText(url) fillUnivlist(lit, li, a, count) number = fillUnivlist(lit, li, a, count) printUnivlist(lit, li, number) else: break main()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!