iT邦幫忙

0

python 爬蟲 抓表格問請教

  • 分享至 

  • xImage

您好:
參可書籍範例
要到
driver.get("http://stats.nba.com/players/traditional/?sort=PTS&dir=-1")
去抓資料以下程式碼中

1.應該是版本問題,select_one 位置不對所以抓不到
ValueError: No tables found
請問,一般要如何去解析 這一個表格的路徑?

By.XPATH 後面的路徑 與 select_one 有相關性?
謝謝

但是

pages_remaining = True
page_num = 1
while pages_remaining:
    # 使用Beautiful Soup剖析HTML網頁
    soup = BeautifulSoup(driver.page_source, "lxml")
    table = soup.select_one("body > main > div.stats-container__inner > div > div.row > div > div > nba-stat-table > div.nba-stat-table > div.nba-stat-table__overflow > table") 
    
    
    df = pd.read_html(str(table))
    # print(df[0].to_csv())
    df[0].to_csv("ALL_players_stats" + str(page_num) + ".csv")
    print("儲存頁面:", page_num)
  
    try:
        # 自動按下一頁按鈕
        next_link = driver.find_element( By.XPATH ,'/html/body/main/div[2]/div/div[2]/div/div/nba-stat-table/div[3]/div/div/a[2]')
        next_link.click()
        time.sleep(5)
        if page_num < 11:
            page_num = page_num + 1
        else:
            pages_remaining = False
    except Exception:
        pages_remaining = False  
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
sam0407
iT邦大師 1 級 ‧ 2024-10-04 10:29:32

像這種爬蟲範例最常發生的問題就是網頁改版了,我通常會先去找一下出版社或作者的網頁,看有沒有更新的程式碼,若沒有更新的程式碼,您也可以向出版社或作者提出您的問題,當然會不會有回應就不一定啦~~

因為有段時間沒碰Python了,爬蟲也沒特別去研究,以下的方法是我可能會去嘗試的方向,僅供參考:
1.我會將soap內容print出來,複製到文字編輯器去,把XML內容排列成下方的格式,這樣就可以知道table到底在那個path上,當然這是個笨方法,偶一為之還可以,如果您以後還會持續處理這樣的問題,建議可以google一下,找個自動能將網頁自動格式化的工具來協助

<html>
    <body>
    ...
    </body>
</html>

2.直接用瀏覽器打開您要抓取的網頁,按F12進入網頁開發者工具,之前看過其他人都是從這裡去找網頁相關問題的,建議您花點時間學好這個工具,只要有在作網頁相關的工作,絕對是會經常用到。

我要發表回答

立即登入回答