簡體   English   中英

理解Beautiful Soup中的Find()函數

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

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