logo
Loading...

無法讀取table - Cupoy

D022的程式碼是根據D019更改而來,只有改地點跟年份,但D019讀的到table,D022卻無法...

pycrawler-2

無法讀取table

2020/03/19 下午 04:25
Python網路爬蟲討論版
何政道
觀看數:8
回答數:2
收藏數:0
pycrawler-2

D022的程式碼是根據D019更改而來,只有改地點跟年份,但D019讀的到table,D022卻無法(如下圖),回去觀察html_source發現根本沒有讀到class='TABLE_G'的標籤,但從遊覽器是找的到class='TABLE_G'的標籤、且也有相關表格內容,不知問題出自何處?感謝解惑!

回答列表

  • 2020/03/19 下午 09:27
    Li Yuang
    贊同數:0
    不贊同數:0
    留言數:6

    倒數第二行改成table = soup.find('table')或table = soup.find(class_='TABLE_G')就可以抓到table了

  • 2020/03/21 上午 01:26
    張維元 (WeiYuan)
    贊同數:2
    不贊同數:0
    留言數:0

    嗨,政道


    先補充一下 Li Yuang 的建議,原本這樣的寫法應該是可以的。


    這裡會出錯的原因在於「模擬行為」跟「取得資料」這兩段所導致的,browser.page_source 會去抓取瀏覽器當下的 HTML 內容,有可能抓到 click 之後到資料還沒抓回到 HTML 的時間差問題。這邊提供幾種解法:


    1. 手動觀察的解法:把兩塊分開執行,「模擬行為」執行後,確保網頁上有資料,才繼續執行「取得資料」。

    2. 程式自動的解法(硬解):在「模擬行為」跟「取得資料」之間,使用 time.sleep() 暫停一下,確保資料回來後才繼續存取。

    3. 程式自動的解法:使用 selenium 的 wait until 方法,可以自動偵測網頁的畫面資料準備好了沒,具體操作細節可以參考文件


    如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃