Que par les docs, vous faites d'abord un arbre d'analyse:
importBeautifulSoup
html ="<html><body><tr><td><a href='foo'/></td></tr></body></html>"
soup =BeautifulSoup.BeautifulSoup(html)
et puis vous effectuer une recherche, par exemple pour <a> balises dont le parent immédiat est un <td>:
for ana in soup.findAll('a'):if ana.parent.name =='td':print ana["href"]
malheureusement ne fonctionne pas fonctionne très bien pour moi (à l'aide de la version actuelle de cours, 6 ans après l'original post-pip install beautifulsoup4, et puis, bien sûr, le nom du module est maintenant bs4) -- print 'foo', tel que requis. Il est bien sûr impossible de vous offrir toute l'aide basée sur une vague description de votre problème "ne marche pas [sic] travail"!-)
fromBeautifulSoupimportBeautifulSoup
soup =BeautifulSoup(html)
anchors =[td.find('a')for td in soup.findAll('td')]
Qui 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 alors utiliser findAll si vous avez plusieurs liens à l'intérieur de chaque td.
Mise à JOUR: re Daniele commentaire, si vous voulez vous assurer que vous n'avez pas de None's dans la liste, vous pouvez modifier la liste de compréhension ainsi:
fromBeautifulSoupimportBeautifulSoup
soup =BeautifulSoup(html)
anchors =[a for a in(td.find('a')for td in soup.findAll('td'))if a]
Qui, fondamentalement, ajoute juste vérifier pour voir si vous avez un réel élément retourné par td.find('a').
c'est très intelligent! mais si 'a' n'est pas présent, il faudrait inclure une personne dans les ancres liste? comment puis-je remplir les ancres liste des " a skypping la Nvos? Ok, j'ai mis à jour la question à traiter avec Aucun retrait de la liste. c'est génial! merci!
Que par les docs, vous faites d'abord un arbre d'analyse:
et puis vous effectuer une recherche, par exemple pour
<a>
balises dont le parent immédiat est un<td>
:fonctionne très bien pour moi (à l'aide de la version actuelle de cours, 6 ans après l'original post-pip install beautifulsoup4, et puis, bien sûr, le nom du module est maintenant bs4) -- print 'foo', tel que requis. Il est bien sûr impossible de vous offrir toute l'aide basée sur une vague description de votre problème "ne marche pas [sic] travail"!-)
OriginalL'auteur
Quelque chose comme cela?
Qui 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 alors utiliserfindAll
si vous avez plusieurs liens à l'intérieur de chaque td.Mise à JOUR: re Daniele commentaire, si vous voulez vous assurer que vous n'avez pas de
None
's dans la liste, vous pouvez modifier la liste de compréhension ainsi:Qui, fondamentalement, ajoute juste vérifier pour voir si vous avez un réel élément retourné par
td.find('a')
.Ok, j'ai mis à jour la question à traiter avec Aucun retrait de la liste.
c'est génial! merci!
OriginalL'auteur