Python 访问此网站时程序 times-out
Python program times-out when hitting this website
为什么这个函数无法从“https://www.seattletimes.com/feed/”读取XML?
我可以从我的浏览器访问 URL 很好。它还从其他网站 读取 XML 没有问题 ("https://news.ycombinator.com/rss").
import urllib
def get_url(u):
header = {'User-Agent': 'Mozilla/5.0'}
request = urllib.request.Request(url=url, headers=header)
response = urllib.request.urlopen(request)
return response.read().decode('utf-8')
url = 'https://www.seattletimes.com/feed/'
feed = get_url(url)
print(feed)
程序每次都超时
想法?:
- 也许
header
需要更多信息(Accept
等)?
编辑 1:
我用我的浏览器 header 替换了来自脚本的请求 header
。还是no-go.
header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US,en;q=0.9',
'Connection': 'keep-alive',
'Accept-Language': 'en-US,en;q=0.9',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' }
我不太清楚为什么 header
/user-agent
会混淆网站。如果删除它,您的代码就可以正常工作。我已经尝试了不同的 header 参数而没有问题,user-agent
似乎是导致该行为的原因。
import urllib.request
def get_url(u):
request = urllib.request.Request(url=url)
response = urllib.request.urlopen(request)
return response.read().decode('utf-8')
url = 'https://www.seattletimes.com/feed/'
feed = get_url(url)
print(feed)
经过一些调试后,我发现了一个合法的 header 组合(请记住,我认为这是他们的错误):
header = {
'User-Agent': 'Mozilla/5.0',
'Cookie': 'PHPSESSID=kfdkdofsdj99g36l443862qeq2',
'Accept-Language': "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",}
为什么这个函数无法从“https://www.seattletimes.com/feed/”读取XML?
我可以从我的浏览器访问 URL 很好。它还从其他网站 读取 XML 没有问题 ("https://news.ycombinator.com/rss").
import urllib
def get_url(u):
header = {'User-Agent': 'Mozilla/5.0'}
request = urllib.request.Request(url=url, headers=header)
response = urllib.request.urlopen(request)
return response.read().decode('utf-8')
url = 'https://www.seattletimes.com/feed/'
feed = get_url(url)
print(feed)
程序每次都超时
想法?:
- 也许
header
需要更多信息(Accept
等)?
编辑 1:
我用我的浏览器 header 替换了来自脚本的请求 header
。还是no-go.
header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US,en;q=0.9',
'Connection': 'keep-alive',
'Accept-Language': 'en-US,en;q=0.9',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' }
我不太清楚为什么 header
/user-agent
会混淆网站。如果删除它,您的代码就可以正常工作。我已经尝试了不同的 header 参数而没有问题,user-agent
似乎是导致该行为的原因。
import urllib.request
def get_url(u):
request = urllib.request.Request(url=url)
response = urllib.request.urlopen(request)
return response.read().decode('utf-8')
url = 'https://www.seattletimes.com/feed/'
feed = get_url(url)
print(feed)
经过一些调试后,我发现了一个合法的 header 组合(请记住,我认为这是他们的错误):
header = {
'User-Agent': 'Mozilla/5.0',
'Cookie': 'PHPSESSID=kfdkdofsdj99g36l443862qeq2',
'Accept-Language': "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",}