簡體   English   中英

如何在美麗的湯中添加嵌套元素

[英]How to get a nested element in beautiful soup

我正在努力獲取在td中獲取一些href所需的語法。 table,tr和td元素沒有任何類或id。

如果我想在這個例子中抓住錨點,我需要什么?

<tr> <td> <a> ...

謝謝

根據文檔,首先創建一個解析樹:

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

然后在其中搜索,例如搜索其直接父級為<td> <a>標記:

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

更新:關於Daniele的評論,如果您想確保列表中沒有任何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')返回的實際元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM