我正在努力獲取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