Ce qui suit montre 10 façons d'écrire des sélecteurs CSS. Chaque secteur CSS extrait un élément de ʻEurasia de continents.html`.
<ul id="continents">
<li id="au">Australia</li>
<li id="na">NorthAmerica</li>
<li id="sa">SouthAmerica</li>
<li id="ea">Eurasia</li>
<li id="af">Africa</li>
</ul>
from bs4 import BeautifulSoup
fp = open("continents.html", encoding="utf-8")
soup = BeautifulSoup(fp, 'html.parser')
sel = lambda q: print(soup.select_one(q).string)
sel("#ea") # (1)
sel("li#ea") # (2)
sel("ul > li#ea") # (3)
sel("#continents #ea") # (4)
sel("#continents > #ea") # (5)
sel("ul#continents >li#ea") # (6)
sel("li[id='ea']") # (7)
sel("li:nth-of-type(4)") # (8)
print(soup.select("li")[3].string) # (9)
print(soup.find_all("li")[3].string) # (10)
(1) Extraire l'élément dont l'attribut id est ʻea (2) Extraire l'élément avec la balise «<li>» et l'attribut id «a» (3) Extrayez (2) en le spécifiant de la balise supérieure
. (4) Extraire l'élément enfant avec l'attribut id ʻea dans la hiérarchie sous l'élément avec l'attribut id continents
(5) Extraire l'élément enfant avec l'attribut id ʻeadans la hiérarchie directement sous l'élément avec l'attribut idcontinents (6) Extrayez les éléments de la balisedont l'attribut id estcontinents et de la balise dont l'attribut id est ʻea juste en dessous.
(7) Extraire l'élément de la balise <li> dont l'attribut id est ʻea (8) Extraire l'élément de la 4ème balise (9) Utilisezselect () pour extraire la balise et obtenir l'élément de cela [3](3 à partir de 0, c'est-à-dire le 4ème) (10) Utilisezfind_all () pour retirer la balise et obtenir l'élément de that [3]` (3 à partir de 0, c'est-à-dire le 4ème)
Résultat d'exécution
Eurasia Eurasia Eurasia Eurasia Eurasia Eurasia Eurasia Eurasia Eurasia Eurasia
Voici un résumé des fonctions utilisées pour le scraping.
find (), méthode find_all ()Extrayez un élément en spécifiant un attribut arbitraire. La méthode find () peut obtenir un élément, et la méthode find_all () peut obtenir plusieurs éléments à la fois.
Exemple d'utilisation
title = soup.find (id = "title") # Récupère l'élément dont l'attribut id est title
linls = soup.find_all ("a") # Récupère tous les éléments marqués
select (), méthode select_all ()
Spécifiez le sélecteur par l'argument et récupérez l'élément. La méthode select () peut obtenir un élément, et la méthode select_all () peut obtenir plusieurs éléments. L'exemple d'utilisation est comme dans sel-continents.py ci-dessus.Je comprends comment gratter, mais la grammaire python cesse souvent de comprendre, donc je veux garder à l'esprit l'objectif sous-jacent de comprendre la grammaire python.
Recommended Posts