Загрузка csv с URL-адреса иногда не выполняется - PullRequest
0 голосов
/ 11 июля 2020

Я использовал приведенные ниже коды для извлечения исторических данных из nasdaq.com, но это не удалось.

import pandas as pd
link = "https://www.nasdaq.com/api/v1/historical/BFC/stocks/2015-07-12/2020-07-12"
data = pd.read_csv(link, skiprows=2)
print(data)

Затем я попробовал другой код ниже, но тоже потерпел неудачу.

import csv
import requests

csv_url = 'https://www.nasdaq.com/api/v1/historical/BFC/stocks/2015-07-12/2020-07-12/'
req = requests.get(csv_url)
url_content = req.content
csv_file = open('downloaded.csv', 'wb')
csv_file.write(url_content)
csv_file.close()

Но коды выше работают для некоторых других URL-ссылок, таких как https://www.ishares.com/de/professionelle-anleger/de/produkte/270048/ishares-msci-world-value-factor-ucits-etf/1478358465952.ajax?fileType=csv&fileName=IS3S_holdings&dataType=fund&asOfDate=20180731

Кто-нибудь может посоветовать?

1 Ответ

0 голосов
/ 12 июля 2020

Вам нужно установить заголовок с user-agent к запросу. Заголовок должен быть в формате dict

headers = {'User-Agent': 'Mozilla/5.0'}

Таким образом, ваш код с запросами будет:

import csv
import requests
headers = {'User-Agent': 'Mozilla/5.0'}
csv_url = 'https://www.nasdaq.com/api/v1/historical/BFC/stocks/2015-07-12/2020-07-12/'
req = requests.get(csv_url, headers=headers)
url_content = req.content
csv_file = open('downloaded.csv', 'wb')
csv_file.write(url_content)
csv_file.close()
...