您好:
參可書籍範例
要到
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
像這種爬蟲範例最常發生的問題就是網頁改版了,我通常會先去找一下出版社或作者的網頁,看有沒有更新的程式碼,若沒有更新的程式碼,您也可以向出版社或作者提出您的問題,當然會不會有回應就不一定啦~~
因為有段時間沒碰Python了,爬蟲也沒特別去研究,以下的方法是我可能會去嘗試的方向,僅供參考:
1.我會將soap內容print出來,複製到文字編輯器去,把XML內容排列成下方的格式,這樣就可以知道table到底在那個path上,當然這是個笨方法,偶一為之還可以,如果您以後還會持續處理這樣的問題,建議可以google一下,找個自動能將網頁自動格式化的工具來協助
<html>
<body>
...
</body>
</html>
2.直接用瀏覽器打開您要抓取的網頁,按F12進入網頁開發者工具,之前看過其他人都是從這裡去找網頁相關問題的,建議您花點時間學好這個工具,只要有在作網頁相關的工作,絕對是會經常用到。