Question

J'ai du mal avec la syntaxe requise pour récupérer quelques hrefs dans un td.Les éléments table, tr et td n'ont aucune classe ni identifiant.

Si je voulais prendre l’ancre dans cet exemple, de quoi aurais-je besoin ?

<tr> <td> <A> ...

Merci

Était-ce utile?

La solution

Conformément à la documentation, vous créez d'abord un arbre d'analyse :

import BeautifulSoup
html = "<html><body><tr><td><a href='foo'/></td></tr></body></html>"
soup = BeautifulSoup.BeautifulSoup(html)

puis vous y recherchez, par exemple <a> balises dont le parent immédiat est un <td>:

for ana in soup.findAll('a'):
  if ana.parent.name == 'td':
    print ana["href"]

Autres conseils

Quelque chose comme ça?

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
anchors = [td.find('a') for td in soup.findAll('td')]

Cela devrait trouver le premier "a" à l'intérieur de chaque "td" dans le code HTML que vous fournissez.Vous pouvez modifier td.find pour être plus précis ou bien utiliser findAll si vous avez plusieurs liens à l'intérieur de chaque td.

MISE À JOUR:concernant le commentaire de Daniele, si vous voulez être sûr de ne pas en avoir Noneest dans la liste, alors vous pouvez modifier la compréhension de la liste ainsi :

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
anchors = [a for a in (td.find('a') for td in soup.findAll('td')) if a]

Ce qui ajoute simplement une vérification pour voir si vous avez un élément réel renvoyé par td.find('a').

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top