logo
Loading...

出現AttributeError: 'NoneType' object has no attribute 'span'錯誤 - Cupoy

1.不知是不是改版??? 變成  期待度跟滿意度都是要如何改 <div class="levelte...

pycrawler

出現AttributeError: 'NoneType' object has no attribute 'span'錯誤

2019/12/30 下午 09:43
Python網路爬蟲討論版
邱筑
觀看數:24
回答數:3
收藏數:1
pycrawler

1.不知是不是改版??? 變成  期待度跟滿意度都是要如何改 <div class="leveltext">


2.另外問題 可以用 文字去搜尋 反向找節點嗎??

用程式 滿意度 而找到 <dl class="levelbox">


------------------------------------------------------------------

<dl class="levelbox">

                                    <dt>

                  <div class="level_name">期待度</div>

                  <div class="leveltext">

                    <span>69%</span>

                    網友想看

                  </div>

                  </dt>

                                                      <dd>

                    

                    <div class="level_name">滿意度</div>

                    <div class="leveltext">

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

                      綜合評分

                    </div>

                  </dd>

 </dl>

回答列表

  • 2019/12/31 下午 08:49
    Jeffrey
    贊同數:1
    不贊同數:0
    留言數:0

    請問一下,你的問題是針對沒有”span” API 的問題? 這個是版本的問題,可以更新套件。

    其他的是問題1?還是只有問題2?

  • 2020/01/02 上午 10:23
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:1

    1.不知是不是改版??? 變成  期待度跟滿意度都是要如何改 <div class="leveltext">


    => 嗨,原因是 Yahoo 電影 的網站後來有改版過,原本參考解答給的 starwithnum 這個 class 被拿掉了。建議統一改成 leveltext 去找(可以參考一下之前同學討論的文章)。


    2. 另外問題 可以用 文字去搜尋 反向找節點嗎?? 用程式 滿意度 而找到 <dl class="levelbox">


    => 但是這個邏輯必須要自己寫, BeatifulSoup 套件並沒有提供這樣的做法。

  • 2020/01/02 下午 05:23
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:0

    嗨,可以參考一下這一篇:https://www.cupoy.com/qa/club/ai_tw/0000016E62FB84E4000000026375706F795F72656C656173654B5741535354434C5542/0000016EF8D64566000001136375706F795F72656C656173655155455354


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





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



    ```

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

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

    ```