Un mémorandum de recherche de balises html par `` beautifulsoup4 ''.
#Toutes les balises p
find_all("p")
#Seule la première balise p trouvée
find("p")
#une balise et href commençant par hogehoge
import re
find_all("a", href=re.compile("^hogehoge"))
#Spécifier la relation parent-enfant, de manière lâche
select('body div p')
#Relation parent-enfant # 2, stricte
select('body > div > p')
#nom de la classe
select('.myclass')
#nom d'identité
select('#myid')
#ET condition
select('.myclass1.myclass2')
#Le troisième du html ci-dessous<li>Rechercher des tags
# <html>
# <body>
# <ul>
# <li>Non précisé</li>
# <li>Non précisé</li>
# <li>Il est précisé</li>
# <li>Non précisé</li>
# </ul>
# </body>
# </html>
select('body > ul > li:nth-of-type(3)')
La raison pour laquelle cela n'a pas fonctionné était que le code HTML du site source de scraping avait une balise de début mais pas de balise de fermeture. La solution consiste à supprimer la balise de début. (Au fait, la balise de fermeture existait sur les outils de développement de Chrome, je ne l'ai donc pas remarquée avant de regarder la source de la page ...)
url = "http://hogehoge/"
soup = BeautifulSoup(url.text, "lxml")
#Supprimez la balise dd car il n'y a pas de balise de fermeture pour la balise dd
for tag in soup.find_all('dd'):
tag.unwrap()
Supprimez toutes les balises <dd> ''. Cependant, si vous utilisez
.decompose () '', les éléments après <dd> '' disparaîtront également, supprimez donc uniquement la balise avec
.unwrap () ''.
Recommended Posts