Python中requests与urllib模块的差异及请求返回结果不一致问题咨询
Python中requests与urllib模块的差异及请求返回结果不一致问题咨询
UPD:不对,那个链接的问题和我的不一样,也没解决我的问题(除非我理解错了)。我的问题更偏向于表层:为什么Python里有这么多发请求的库,该选哪个?我知道现有选项,但我的问题更具体一点。
我想搞清楚requests模块和urllib模块在请求处理上到底有什么差异?
为了测试,我给一个站点发送GET请求,只设置了User-Agent头。结果urllib能拿到正确的页面内容,但requests返回的却是带有“Enable JavaScript and cookies to continue”提示的页面。
测试代码示例
使用requests的代码:
import requests url = 'https://www.securityweek.com/' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' } response = requests.get(url, headers=headers) with open('test1.html', 'w', encoding='utf-8') as f: f.write(response.text)
使用urllib的代码:
from urllib.request import Request, urlopen url = 'https://www.securityweek.com/' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' } response = urlopen(Request(url, headers=headers)) with open('test2.html', 'w', encoding='utf-8') as f: f.write(response.read().decode('utf-8'))
我还试过用httpbin这类工具检查请求,看起来两个请求应该是完全一样的,但实际返回结果却差这么多,实在搞不懂原因。
备注:内容来源于stack exchange,提问作者andy




