Перестал работать скрипт, который я использую для отслеживания изменений биржевых сводок с сайта nasdaq.com.
URL-адрес по-прежнему может быть доступен для моих браузеров, но при попытке доступа к нему с помощью Python 3 urllib.request выдается ошибка TimeoutError: [WinError 10060]
.
Другие URL-адреса по-прежнему ведут себя как ожидалось. Я пытаюсь понять, является ли это какой-то серверный скрипт, который обнаруживает, что я не в браузере? Я предоставляю поддельные заголовки. Смотри ниже.
import urllib.request
import traceback
req_headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
urls=['http://msn.com',
'https://google.com',
'https://www.nasdaq.com/markets/stocks/symbol-change-history.aspx?sortby=EFFECTIVE&page=1',
'https://yahoo.com']
for url in urls:
try:
req = urllib.request.Request(
url,
data=None,
headers=req_headers
)
print('trying %s'%url)
pagetext=urllib.request.urlopen(req).read()
print ('Success',len(pagetext))
except:
traceback.print_exc()
Выводы следующие:
trying http://msn.com
Success 446035
trying https://google.com
Sucess 234077
trying https://www.nasdaq.com/markets/stocks/symbol-change-history.aspx?sortby=EFFECTIVE&page=1
Traceback (most recent call last):
...
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
trying https://yahoo.com
Success 642758
Что здесь не так?