Comment utiliser le robot d'exploration Python pour analyser des informations sur des pages Web?
Prenons l'exemple de Books to Scrape, à l'adresse: http://books.toscrape.com/
Importez d'abord la bibliothèque de requêtes et BeautifulSoup
import requests
from bs4 import BeautifulSoup
Obtenez les informations de code source de l'URL
url = 'http://books.toscrape.com/'
res = requests.get(url)
print(res.status_code) # 查看是否获取成功,成功则显示200
html = res.text
F12 ou cliquez avec le bouton droit pour vérifier le code de la page Web.
Vous pouvez voir que le titre du livre est dans le bloc <li>, créer un objet beau et rechercher dans l'instruction find.
Nous créons une liste vide pour recevoir et positionner le code source via BeautifulSoup.
book_list = [] # 空列表用于后面的接收
soup = BeautifulSoup(html, 'lxml')
beau = soup.find('ul', class_='nav nav-list').find('ul').find_all('li')
Définissez le paramètre q pour parcourir l'objet beau. Ajoutez un autre objet each1 pour trouver la partie lien hypertexte dans le paramètre q. Ensuite, définissez les deux paramètres i et x pour parcourir l'énumération et la liste de livres, et respectivement la sortie dans la boucle: séquence, titre du livre et lien d'adresse.
(La fonction d'énumération commence à 0, donc si vous voulez que l'ordre de sortie commence à 1, faites i + 1; sélectionnez le 'ref' de each1 objet dans la partie lien)
for q in beau:
book_list.append(q.a.text.strip()) # 此时,用book_list接收书名文字
each1 = q.find('a')
for i, x in enumerate(book_list):
print(i+1, '书名:' + x + '\t 网址:' + url + each1['href'] + '\n')
À ce stade, vous pouvez obtenir: "Séquence + Titre du livre + Lien URL"
L'essence de Python est "efficace"!
Enfin, attachez la version simplifiée du code nécessaire pour crawler le titre du livre et le lien URL correspondant, 8 lignes de code pour réaliser l'exploration!
import requests
from bs4 import BeautifulSoup
beau = BeautifulSoup(requests.get('http://books.toscrape.com/').text, 'lxml').find('ul', class_='nav nav-list').find('ul').find_all('li')
book_list = []
for q in beau:
book_list.append(q.a.text.strip())
for i, x in enumerate(book_list):
print(i+1, '书名:' + x + '\t 网址:' + 'http://books.toscrape.com/' + q.find('a')['href'] + '\n')