我遇到了一个奇怪的请求包行为...或者我相信:
(1)对于某个网站,requests.get在Windows上运行,但在Linux上冻结(如果超时设置为几秒,则会引发超时错误)
(2)urllib.request.urlopen适用于Windows和Linux
是否有人建议如何进一步调试/调查?
以下是详细信息:
在我的Windows机器上运行Inside a Jupyter Notebook:
import sys
import requests
print(sys.version)
print(requests.__version__)
3.6.3 | Anaconda custom(32位)| (默认,2017年10月15日,07:29:16)[MSC v.1900 32 bit(Intel)]
2.18.4
然后我尝试:
time1 = time.time()
response=requests.get('https://www.tagheuer.com/en/watches/tag-heuer-carrera-calibre-5-automatic-watch-39-mm-war211a-ba0782')
time2 = time.time()
print(response.status_code)
print(time2-time1)
结果:
200
0.6808576583862305
到目前为止,那么好......然后我转到Unix服务器:
import sys
import requests
print(sys.version)
print(requests.__version__)
3.5.2(默认,2017年11月23日,16:37:01)\ n [GCC 5.4.0 20160609]
2.18.4
当我发出请求声明时,
response=requests.get('https://www.tagheuer.com/en/watches/tag-heuer-carrera-calibre-5-automatic-watch-39-mm-war211a-ba0782')
回来需要很长时间。有时返回的字节看起来根本不像请求的页面。有时候我没有耐心并按下CTRL-C。
但是在同一台服务器上:
from urllib.request import urlopen
import time
url='https://www.tagheuer.com/en/watches/tag-heuer-carrera-calibre-5-automatic-watch-39-mm-war211a-ba0782'
time1 = time.time()
f = urlopen(url)
myfile = f.read()
time2 = time.time()
print(f.status)
print(time2-time1)
结束
200
0.22718000411987305
为什么请求库让我失望了Linux机器而不是Windows机器?
为什么urllib.request.urlopen会工作,但请求会冻结?他们有什么不同的做法?
相同的代码适用于两个平台上的www.google.com。 TAG_Heuer网站的哪些(非标准?)行为会导致请求失败?
期待您的反馈和想法!