You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动