logo
Loading...

使用leveltext抓取資料問題 - Cupoy

在Day 14 中查詢滿意度的部分,為甚麼可以用"data-num"來擷取,並且在他的網站中沒有le...

使用leveltext抓取資料問題

2019/12/12 下午 02:43
Python網路爬蟲討論版
林祐任
觀看數:13
回答數:4
收藏數:1

在Day 14 中查詢滿意度的部分,為甚麼可以用"data-num"來擷取,並且在他的網站中沒有leveltext starwithnum這一個class ,只有leveltext,那怎麼找到的,還是starwithnum有其他的意思?


```

<span class="count" data-num="3.6" data-run="0">0</span>

```

```

# 滿意度

satisfaction = level_box.find("div", attrs={"class":"leveltext starwithnum"})

print("滿意度:", satisfaction.span["data-num"])  # 滿意度可以從"data-num"這個屬性擷取

```

回答列表

  • 2019/12/12 下午 04:36
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:0

    我們想爬的東西應該長這樣:


    <div class="leveltext starwithnum" >

        <span data-num='4.3'>0</span>

    </div>


    如果程式是寫 satisfaction.span.text 會抓到 span 中間的文字,如果寫 satisfaction.span['data-num'] 會抓到 <span> 內的 data-num 屬性。

  • 2019/12/12 下午 11:24
    小糖果
    贊同數:0
    不贊同數:0
    留言數:1

    你好,我也遇到這個問題,我看網頁中也沒有老師說的那段文字,爬下來的資料用搜尋沒有找到starwithnum這個class,執行結果是錯誤的?

  • 2019/12/13 上午 11:08
    cham chen
    贊同數:1
    不贊同數:0
    留言數:1

    我其實也有類似狀況,但是我看了一下內部,修正一下code就可以運作。

    可以看一下上面的圖

  • 2019/12/13 下午 05:13
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:1

    欸,應該是新版的網頁把「starwithnum」這個 Class 拿掉了,剛剛看網頁長這樣:



    正確寫法應該改成用 leveltext 來取(但是會跟期待度重複,所以改成 find_all 取 [1])


    ```

    satisfaction = level_box.find_all("div", attrs={"class":"leveltext"})[1]

    print("滿意度:", satisfaction.span["data-num"]) 

    ```