gpt4 book ai didi

python - 接收 HTTP 错误 403 : Forbidden CSV download

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:37 25 4
gpt4 key购买 nike

我正在尝试通过以下网址以编程方式访问 csv:http://www.cmegroup.com/CmeWS/exp/voiProductDetailsViewExport.ctl?media=xls&tradeDate=20180627&reportType=F&productId=425

我尝试过两种方法,一种是简单地将 URL 传递给 data_sheet = pd.read_csv(sheet_url) .我收到 HTTP Error 403: Forbidden尝试使用此方法时出现异常。

def get_sheet(self):
# Accesses CME direct URL (at the moment...will add functionality for ICE later)
# Gets sheet and puts it in dataframe
#Returns dataframe sheet

sheet_url = "http://www.cmegroup.com/CmeWS/exp/voiProductDetailsViewExport.ctl?media=xls&tradeDate="+str(self.date_of_report)+"&reportType="\
+ str(self.report_type)+"&productId=" + str(self.product)

header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}

data_sheet = pd.read_csv(sheet_url)

return data_sheet

我也曾尝试假装成一个浏览器,认为该站点可能不允许直接调用 csv,但随后我收到了 Invalid file path or buffer object type: <class 'requests.models.Response'>异常

def get_sheet(self):
# Accesses CME direct URL (at the moment...will add functionality for ICE later)
# Gets sheet and puts it in dataframe
#Returns dataframe sheet

sheet_url = "http://www.cmegroup.com/CmeWS/exp/voiProductDetailsViewExport.ctl?media=xls&tradeDate="+str(self.date_of_report)+"&reportType="\
+ str(self.report_type)+"&productId=" + str(self.product)

header = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}

req = requests.get(url = sheet_url, headers = header)

data_sheet = pd.read_csv(req)

return data_sheet

我的最终目标是简单地检索该 URL 的 CSV 文件并返回一个数据框。我错过了什么?

更新:我做了一些小改动,刚刚打印了 req我得到 Response [200] 的输出从我在 HTTP 文档中看到的内容来看,这意味着服务器正在接收我的信息。有谁知道问题是否是我直接访问存储 csv 的 URL 通常情况下,如果您单击该 url 关联的按钮,它会自动下载该文件。在检查我的下载文件夹时,我没有看到该文件的任何下载。因此,虽然服务器可能正在接收有效请求,但我可能无法正确处理 url 行为。有什么想法吗?

最佳答案

您的代码有两处错误:

  1. 您正在将响应对象传递给 pandas,

    data_sheet = pd.read_csv(sheet_url)当您的实际 csv 数据位于 sheet_url.content

  2. 中时
  3. pandas 无法从string 读取csvpd.read_csv 仅适用于文件对象。因此,要读取下载的内容,您需要创建一个文件,或者使用字符串编写器创建物理文件,或者使用 io.StringIO(response.content.decode('utf-8'))

使用 io 模块的例子是:

import requests
import io
import pandas as pd

response = requests.get('http://samplecsvs.s3.amazonaws.com/SalesJan2009.csv')

file_object = io.StringIO(response.content.decode('utf-8'))
pd.read_csv(file_object)

关于python - 接收 HTTP 错误 403 : Forbidden CSV download,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51092889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com