我正在努力获取td中的一些hrefs所需的语法。 表,TR和TD元素没有任何类或ID的。如何在美丽的汤中获得嵌套元素
如果我想抓住这个例子中的锚,我需要什么?
< TR> < TD> <一> ...
感谢
我正在努力获取td中的一些hrefs所需的语法。 表,TR和TD元素没有任何类或ID的。如何在美丽的汤中获得嵌套元素
如果我想抓住这个例子中的锚,我需要什么?
< TR> < TD> <一> ...
感谢
按照该文档,您首先进行一个解析树:
import BeautifulSoup
html = "<html><body><tr><td><a href='foo'/></td></tr></body></html>"
soup = BeautifulSoup.BeautifulSoup(html)
,然后你在它可以搜索,例如用于<a>
标签,其母公司为一个<td>
:
for ana in soup.findAll('a'):
if ana.parent.name == 'td':
print ana["href"]
像这样的事情?
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
anchors = [td.find('a') for td in soup.findAll('td')]
这应该在您提供的html的每个“td”中找到第一个“a”。你可以调整td.find
以更具体,或者如果你在每个td内有几个链接,则使用findAll
。
UPDATE:重新丹尼尔的评论,如果你想确保你没有任何None
的列表中,那么你可以这样修改列表理解:
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
anchors = [a for a in (td.find('a') for td in soup.findAll('td')) if a]
这基本上只是增加了一个检查是否有实际的元素返回td.find('a')
。
这是非常聪明!但是如果'a'不存在,它将包括None到锚列表中?我怎么才能填充锚点列表只有实际的'a的Nones跳动? – 2013-04-25 03:41:58
好吧,我已经更新了这个问题,以处理从列表中删除无。 – 2013-04-25 10:09:44