直接从 URL 读取 csv 文件 / 如何修复 403 禁止错误

数据挖掘 Python
2022-02-12 17:20:19

csv 文件是可下载的。我可以下载文件并使用 read_csv,但我想通过 jupyter 中的直接 URL 读取文件,我使用了以下代码,但HTTP 403 Forbidden 出现错误

from io import StringIO

import pandas as pd
import requests
url="https://fineli.fi/fineli/en/elintarvikkeet/resultset.csv"
s=requests.get(url).text

c=pd.read_csv(StringIO(s))
c

如何使用分隔符“;”直接在 python 中通过 URL 读取 csv 文件

2个回答

问题是您拥有的网址不接受“非浏览器”请求。Python 请求的默认标头是

'User-Agent': 'python-requests/2.13.0'

您可以将自己的标头作为这样的参数传递

from io import StringIO
import pandas as pd
import requests

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36'}

url="https://fineli.fi/fineli/en/elintarvikkeet/resultset.csv"
s=requests.get(url, headers= headers).text

c=pd.read_csv(StringIO(s), sep=";")
c

我使用以下代码读取文件

from urllib.request import urlopen, Request
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3"}
reg_url = "https://fineli.fi/fineli/en/elintarvikkeet/resultset.csv"
req = Request(url=reg_url, headers=headers) 
html = urlopen(req).read() 
print(html)