[英]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.