所以我一直在努力弄清楚如何处理请求。
所以现在我已经做了类似的事情:
url = 'www.helloworld.com'
params = {
"": page_num,
"orderBy": 'Published'
}
headers = {
'User-Agent': ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36'
' (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36')
}
resp = requests.get(url, headers=headers, params=params, timeout=12)
resp.raise_for_status()
print(resp.url)
基本上,现在它的打印方式是:
www.helloworld.com/?=2&orderBy=Published
我希望拥有的是:
www.helloworld.com/2?orderBy=Published
我如何能够更改params请求,使其最终像上面一样?
答案 0 :(得分:1)
您的问题是,您正在尝试修改目标URL路径,而不是参数。因此,您不能使用请求中的params
参数来实现此目的。
我建议2种选择来做您想做的事情:
手动构建网址。对于简单的情况,您可以使用字符串连接来完成此操作,但是有一些模块可以正确执行此操作:https://pypi.org/project/furl/,https://hyperlink.readthedocs.io/en/latest/,它们比urllib.parse.urljoin
更加易于使用并且功能强大
使用apirequests
,它是对请求的简单包装:https://pypi.org/project/apirequests
使用apirequests的示例:
import apirequests
client = apirequests.Client('www.helloworld.com')
resp = client.get('/2', headers=headers, params=params, timeout=12)
# note that apirequests calls "resp.raise_for_status() automatically