從 Pandas 0.19.2 開始,函數(shù)read_csv()可以傳遞一個(gè) URL。例如,從這個(gè)答案中看到:import pandas as pdurl="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"c=pd.read_csv(url)我想使用的網(wǎng)址是:https : //moz.com/top500/domains/csv使用上面的代碼,這個(gè) URL 返回一個(gè)錯(cuò)誤:urllib2.HTTPError: HTTP Error 403: Forbidden基于這篇文章,我可以通過傳遞請求標(biāo)頭來獲得有效的響應(yīng):import urllib2,cookielibsite= "https://moz.com/top500/domains/csv"hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'Accept-Encoding': 'none', 'Accept-Language': 'en-US,en;q=0.8', 'Connection': 'keep-alive'}req = urllib2.Request(site, headers=hdr)try: page = urllib2.urlopen(req)except urllib2.HTTPError, e: print (e.fp.read())content = page.read()print (content)有什么方法可以使用 Pandas 的 web URL 功能read_csv(),而且還傳遞一個(gè)請求標(biāo)頭以使請求通過?
1 回答

開心每一天1111
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
我建議您使用requests和io庫來完成您的任務(wù)。以下代碼應(yīng)該可以完成這項(xiàng)工作:
import pandas as pd
import requests
from io import StringIO
url = "https://moz.com:443/top500/domains/csv"
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0"}
req = requests.get(url, headers=headers)
data = StringIO(req.text)
df = pd.read_csv(data)
print(df)
(如果要添加自定義標(biāo)頭只需修改headers變量)
希望這可以幫助
添加回答
舉報(bào)
0/150
提交
取消