我正在嘗試讀取網站上的表格,但是當我這樣做時,我從網站上得到一個結果:“您的瀏覽器似乎已過時。為了獲得最佳網站體驗,我們建議您更新瀏覽器.”
我可以在同一個 PGA 網站的 Stats 部分使用 requests.get 沒有問題,但由于某種原因,這些歷史結果表的顯示方式會導致問題。發生的一件有趣的事情是該網站允許您為顯示的表格選擇不同的年份,但這樣做不會對地址產生任何影響,所以我懷疑他們正在以一種 read_html 不起作用的方式對其進行格式化. 還有其他建議嗎?代碼如下。
import pandas as pd
import requests
farmers_url = 'https://www.pgatour.com/tournaments/farmers-insurance-open/past-results.html'
farmers = pd.read_html(requests.get(farmers_url).text, header=0)[0]
farmers.head()
uj5u.com熱心網友回復:
我看到對以下檔案的請求,以獲取您想要的內容。否則,這將是瀏覽器從您的起始 url 發出的附加請求。您當前獲得的是在瀏覽器動態發生的任何更新之前請求的 url 中表格的實際內容。
import requests
import pandas as pd
headers = {'User-Agent': 'Mozilla/5.0'}
r = requests.get('https://www.pgatour.com/tournaments/farmers-insurance-open/past-results/jcr:content/mainParsys/pastresults.selectedYear.2021.004.html', headers=headers).text
pd.read_html(r)
如果你想整理看起來像實際的網頁那么像下面的轉換和清理:
import requests
import pandas as pd
headers = {'User-Agent': 'Mozilla/5.0'}
r = requests.get('https://www.pgatour.com/tournaments/farmers-insurance-open/past-results/jcr:content/mainParsys/pastresults.selectedYear.2021.004.html', headers=headers).text
t = pd.read_html(r)[0]
t.reset_index()
t.columns = [':'.join([i[0], i[1]]) if 'ROUNDS' in i else i[0] for i in t.columns]
t.POS = t.POS.map(lambda x: x.split(' ')[-1])
round_columns = [i for i in t.columns if 'ROUNDS' in i]
t[round_columns] = t[round_columns].applymap(lambda x: x.split(' ')[0])
t.drop('TO PAR', inplace = True, axis = 1)
t.rename(columns={"TOTALSCORE": "TOTAL SCORE", "OFFICIALMONEY": "OFFICIAL MONEY", "FEDEXCUPPOINTS":"FEDEX CUP POINTS"}, inplace = True)
細節:




轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369466.html
上一篇:如何從表中抓取資料
