web-dev-qa-db-fra.com

belle soupe se tag.id

J'essaie d'obtenir une liste des identifiants div d'une page. Lorsque j'imprime les attributs, j'obtiens les identifiants répertoriés.

for tag in soup.find_all(class_="bookmark blurb group") :
  print(tag.attrs)

résulte en:

{'id': 'bookmark_8199633', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_7744613', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_7338591', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_7338535', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}
{'id': 'bookmark_4530078', 'role': 'article', 'class': ['bookmark', 'blurb', 'group']}

Je sais donc qu'il y a des identifiants. Cependant, lorsque j'imprime tag.id à la place, j'obtiens simplement une liste de "Aucun". Qu'est-ce que je fais mal ici?

17
klreeher

Vous pouvez accéder aux attributs de la balise en la traitant comme un dictionnaire ( documentation ):

for tag in soup.find_all(class_="bookmark blurb group") :
    print tag.get('id')

La raison pour laquelle tag.id N'a pas fonctionné est qu'elle est équivalente à tag.find('id'), ce qui donne None car aucune balise id n'a été trouvée (- documentation ).

25
alecxe