Я пытаюсь получить доступ к 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
Моя конечная цель - просто извлечь CSV по этому URL и вернуть фрейм данных. Чего мне не хватает?
ОБНОВЛЕНИЕ: Я сделал еще кое-что и напечатал req
, и я получил вывод Response [200]
, что, как я вижу в документах HTTP, означает, что сервер получает мою информацию. Кто-нибудь знает, если проблема в том, что у меня есть прямой доступ к URL-адресу, где хранится CSV-файл, который обычно, если вы нажимаете кнопку, с которой связан URL-адрес, автоматически загружает файл. При проверке моей папки загрузок я не вижу никаких загрузок для файла. Таким образом, в то время как сервер может получать действительный запрос, я, возможно, неправильно обрабатываю поведение URL. Есть идеи?