簡體   English   中英

當有另一個類似的div時,如何湯特定的div class?

[英]How to soup particular div class when there is another with similar one?

from bs4 import BeautifulSoup as bs
x = ' <div class="data dturd"><h3>Seaspiracy</h3></div>  <div class="data"><h3>SeaspiracyX</h3></div>'
soup = bs(x,"lxml")
print(soup.find('div',class_='data'))

我正在嘗試在第二個 div 中加入 class 'data'。 但是上面的代碼總是找到帶有 class 'data dturd' 的 div。

我該如何解決?

您可以將 CSS 選擇器與.select_one:nth-child(2)偽選擇器一起使用:

>>> soup.select_one(".data:nth-child(2)")
<div class="data"><h3>SeaspiracyX</h3></div>

您可以使用:不過濾掉第一個孩子中存在的其他 class

from bs4 import BeautifulSoup as bs
x = ' <div class="data dturd"><h3>Seaspiracy</h3></div>  <div class="data"><h3>SeaspiracyX</h3></div>'
soup = bs(x,"lxml")
print(soup.select_one('.data:not(.dturd)').text)

我絕對同意@ggorlen 的做法。 這是一種更笨拙的方法,有點奏效。

from bs4 import BeautifulSoup as bs
x = ' <div class="data dturd"><h3>Seaspiracy</h3></div>  <div class="data"><h3>SeaspiracyX</h3></div>'
soup = bs(x,"lxml")
print(soup.find_all('div',class_='data')[1])

另一個解決方案:

soup.find(lambda tag: tag.name == "div" and tag['class'] == ["data"])

暫無
暫無

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

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