Иногда я могу получить данные о запасах от Yahoo, иногда получаю ошибку: urllib.error.HTTPError: Ошибка HTTP 401: несанкционированная ошибка
hsi - это фондовый индекс hengsheng, На моем локальном компьютере каждые 10 обращаются к get_hsiфункция с x=get_hsi()
, примерно 5 раз, я получаю правильный результат.
Интересно, почему код не может выполняться каждый раз успешно, есть ли какая-то ошибка с кодом или какая-то ошибка с моей настройкой или установка модуля?
import os ,io,re
import pandas as pd
import time,datetime
import http.cookiejar
import urllib.request
def get_hsi():
start=0
end=int(time.time())
symbol="^hsi"
target1 = "https://finance.yahoo.com/quote/{}/?p={}".format(symbol,symbol)
fname_cookie = os.path.join('/tmp','cookies.txt')
cookie = http.cookiejar.MozillaCookieJar(fname_cookie)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
response1 = opener.open(target1).read().decode('utf-8')
cookie.save()
crumb = re.findall('"CrumbStore":{"crumb":"(.+?)"}', response1)[0]
cookie.load(fname_cookie)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)
target2 = "https://query1.finance.yahoo.com/v7/finance/download/{0}?period1={1}&period2={2}&interval=1d&events=history&crumb={3}".format(symbol,start,end,crumb)
response2 = opener.open(target2).read().decode('utf-8')
df = pd.read_csv(io.StringIO(response2),sep=",")
os.remove(fname_cookie)
return df