[英]Understand the Find() function in Beautiful Soup
我知道我想做的事情很簡單,但卻讓我感到悲痛。 我想使用BeautifulSoup從HTML中提取數據。 為此,我需要正確使用.find()
函數。 這是我正在使用的HTML:
<div class="audit">
<div class="profile-info">
<img class="profile-pic" src="https://pbs.twimg.com/profile_images/471758097036226560/tLLeiOiL_normal.jpeg" />
<h4>Ed Boon</h4>
<span class="screen-name"><a href="http://www.twitter.com/noobde" target="_blank">@noobde</a></span>
</div>
<div class="followers">
<div class="pie"></div>
<div class="pie-data">
<span class="real number" data-value=73599>73,599</span><span class="real"> Real</span><br />
<span class="fake number" data-value=32452>32,452</span><span class="fake"> Fake</span><br />
<h6>Followers</h6>
</div>
</div>
<div class="score">
<img src="//twitteraudit-prod.s3.amazonaws.com/dist/f977287de6281fe3e1ef36d48d996fb83dd6a876/img/audit-result-good.png" />
<div class="percentage good">
69%
</div>
<h6>Audit score</h6>
我想的值是73599
,從data-value=73599
, 32352
從data-value=32452
,而69%
的percentage good
。
使用過去的代碼和在線示例,這是我到目前為止:
RealValue = soup.find("div", {"class":"real number"})['data-value']
FakeValue = soup.find("audit", {"class":"fake number"})['data-value']
到目前為止兩者都沒有效果。 我不知道如何制作這個發現以獲得69%
數字。
soup.find("div", {"class":"real number"})['data-value']
在這里,您要搜索div
元素,但span
在您的示例HTML數據中具有“實數”類,請嘗試:
soup.find("span", {"class": "real number", "data-value": True})['data-value']
在這里,我們還檢查data-value
屬性的存在。
要查找具有“實數”或“假數”類的元素,您可以創建一個CSS選擇器 :
for elm in soup.select(".real.number,.fake.number"):
print(elm.get("data-value"))
要獲得69%
價值:
soup.find("div", {"class": "percentage good"}).get_text(strip=True)
或者,CSS選擇器:
soup.select_one(".percentage.good").get_text(strip=True)
soup.select_one(".score .percentage").get_text(strip=True)
或者,找到具有Audit score
文本的h6
元素,然后獲取前面的兄弟 :
soup.find("h6", text="Audit score").previous_sibling.get_text(strip=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.