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 id
continents (6) Extrayez les éléments de la balise
dont l'attribut id est
continents 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) Utilisez
select () pour extraire la balise
et obtenir l'élément de cela
[3](3 à partir de 0, c'est-à-dire le 4ème) (10) Utilisez
find_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