使用leveltext抓取資料問題
在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:08cham 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"])
```