Cette fois, j'utiliserai Beautiful Soup. python 3.6.0 BeautifulSoup 4.6.0
Cliquez ici pour le document Anglais http://www.crummy.com/software/BeautifulSoup/bs4/doc/
Japonais http://kondou.com/BS4/
$ pip install beautifulsoup4
C'est un programme qui récupère les données de cette page et affiche le contenu de la balise h1. https://pythonscraping.com/pages/page1.html
from urllib.request import urlopen
from bs4 import BeautifulSoup
html=urlopen("https://pythonscraping.com/pages/page1.html")
bsobj=BeautifulSoup(html.read())
print(bsobj.h1)
Si rien n'est fait, la page Web ne sera pas trouvée, ou le racleur lancera une erreur dans un format de données inattendu, vous devez donc écrire la gestion des exceptions.
html=urlopen("https://pythonscraping.com/pages/page1.html")
Cette ligne entraînera une erreur si la page est introuvable Alors, réécrivez-le comme suit.
try:
html=urlopen("https://pythonscraping.com/pages/page1.html")
except:
print("Page non trouvée")
Cette ligne peut également provoquer une erreur
bsobj=BeautifulSoup(html.read())
Je l'ai réécrit comme ça.
try:
bsobj=BeautifulSoup(html.read())
print(bsobj.h1)
except:
print("error")
Vous pouvez trouver la balise souhaitée en utilisant find () et findAll ()
Le code suivant affiche le texte dans <span class = "green"> </ span>
``
span_list = bsobj.findAll("span",{"class":"green"})
Si vous souhaitez afficher non seulement class = "green" mais également class = "red", réécrivez comme suit.
span_list = bsobj.findAll("span",{"class":{"red","green"}})
span_list = bsobj.findAll("span",{"class":"green"})
for i in span_list:
print(i)
Ce code affiche le texte <span class = "green"> </ span>
, mais les balises sont également affichées.
Si vous ne voulez que le texte à l'intérieur, vous devez le réécrire comme suit
#Afficher les balises ensemble
print(i)
#Affichage sans balises
print(i.get_text)
Recommended Posts