Я пытаюсь прочитать некоторые исторические (за 5 лет) данные об акциях с веб-страницы финансов Yahoo с помощью функции панд read_html
.Он выполняет работу частично, потому что читает только первые 100 строк (до 3 мая 2019 г.) таблицы, а не всю таблицу, как мне хотелось бы.
Это мой код:
import pandas as pd
url = 'https://finance.yahoo.com/quote/Q.MX/history?period1=1411189200&period2=1568955600&interval=1d&filter=history&frequency=1d'
# Reads only the first 100 rows, not the entire table
data = pd.read_html(url)[0]
print(data.shape)
# (101,7)
Еще один подход, который я пробовал, заключался в разборе страницы и извлечении данных из проанализированной веб-страницы, однако это дает тот же результат, поскольку он также анализирует только первую100 строк таблицы.
Вот код:
import requests
from bs4 import BeautifulSoup
url = 'https://finance.yahoo.com/quote/Q.MX/history?period1=1411189200&period2=1568955600&interval=1d&filter=history&frequency=1d'
page = BeautifulSoup(requests.get(url).content)
# Getting the table rows
table_rows = page.findAll('tr', {'class':'BdT Bdc($seperatorColor) Ta(end) Fz(s) Whs(nw)'})
print(len(table_rows))
# 100
Моя последняя попытка была получить данные из URL загрузки CSV, однако это привело к нулевому ответу.Код:
import requests
url = 'https://query1.finance.yahoo.com/v7/finance/download/Q.MX?period1=1411189200&period2=1568955600&interval=1d&events=history&crumb=jcmd/2KRw4G'
content = requests.get(url).content
print(content)
# {\n "finance": {\n "error": {\n "code": "Unauthorized",\n "description": "Invalid cookie"\n }\n }\n}\n
Итак, у кого-нибудь есть идеи, как получить полные данные об этой акции со страницы Yahoo?