python请求:简单的方法来替换http get request参数?

时间:2014-11-19 09:30:59

标签: python http get python-requests

我有一个像这样的http GET请求:

url = 'www.somedomain.com/content?var=whatever&pageno=1'
r = requests.get(url)

我想将pageno=1替换为pageno=2,他们说requests适用于人类,但我无法在不将查询解析为pyhton的情况下弄清楚如何做到这一点使用urlparse的字典,然后更改相应的值,然后将urllib.urlencode更改为新查询。

注意

我知道我可以做一个re.sub()并用2或3行解决问题,我认为必须有'pythonic方式'。

我在过去几个月里一直在使用scrapy,他们有一个很好的Request.replace方法来做到这一点,我想我会向requests建议一个功能。

2 个答案:

答案 0 :(得分:1)

您可以使用params方法的get()参数。 quick start

中描述了此功能
>>> payload = {'var': 'whatever', 'pageno': '1'}
>>> r = requests.get("http://www.somedomain.com/content", params=payload)
>>> print(r.url)
http://www.somedomain.com/content?var=whatever&pageno=1

使用这种传递参数的方法,您可以在调用payload之前轻松操纵.get()字典

答案 1 :(得分:0)

我总是以简单的方式做到这一点 - 尽管总有多种方法可以做同样的事情。

首先使用一些逻辑使脚本找到最大值。然后,

max_page=10 # You need to find a way to get this, for now assuming its 10 for example purpose
current_page=0
while current_page!=max_page:
    current_page=current_page+1
    url = 'www.somedomain.com/content?var=whatever&pageno=%s'%str(current_page)
    r = requests.get(url)