Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python一次替换一个HTTP参数_Python_Html_Http - Fatal编程技术网

Python一次替换一个HTTP参数

Python一次替换一个HTTP参数,python,html,http,Python,Html,Http,对Python来说是相当陌生的,在我正在从事的一个项目中遇到了一个绊脚石。我正在用Python为web应用程序编写一个QA测试工具。基本上,我需要做的是使用一个简单的参数链接,看起来像这样: http://www.something.com/index.html?field1=something&field2=something&field3=something 并一次替换一个参数,同时保持其他参数不变,并从web服务器获得响应(即,首先我们将field1设置为不同的值,字段2

对Python来说是相当陌生的,在我正在从事的一个项目中遇到了一个绊脚石。我正在用Python为web应用程序编写一个QA测试工具。基本上,我需要做的是使用一个简单的参数链接,看起来像这样:

http://www.something.com/index.html?field1=something&field2=something&field3=something

并一次替换一个参数,同时保持其他参数不变,并从web服务器获得响应(即,首先我们将field1设置为不同的值,字段2和3将保留为其原始值。然后我们将field2更改为单独的值,字段1和3将保留为其原始值)。我首先将完整链接分解为多个列表(一个包含页面路径,一个包含参数,一个包含参数名称,一个包含值),但我无法将其重新组合到完整链接中以传递回web服务器。所以我的问题是,我是否已经走上了正确的道路?有没有一种方法可以通过httplib或urllib更轻松地实现这一点?再次感谢

处理HTTP时,最好使用库,然后直接获取参数的
dict
,然后修改
dict
,并提出另一个请求,例如:

URL = 'http://www.something.com/index.html?'
params = {'field1': 'something': 'field2': 'something', 'field3': 'something'}

import requests
r = requests.get(URL, params=params)
params['field2'] = 'something else'
r = requests.get(URL, params=params)
或者,使用Python的内置代码:

import urllib, urllib2
page = urllib2.urlopen(URL + urllib.urlencode(params))

我可以给你一个非常简单的解决方案

假设首先将字段1的值从“某物”到“thisthing”,然后将字段2的值从“某物”到“thatthing”,然后将字段3的值从“某物”到“Thosetting”,然后执行以下操作:

>>> import string
>>> xx='http://www.something.com/index.html?field1=something&field2=something&field3=something'
>>> yy=xx.split('field')
>>> yy
['http://www.something.com/index.html?', '1=something&', '2=something&', '3=something']
>>> yy[1]='1=thisthing&'
>>> yy
['http://www.something.com/index.html?', '1=thisthing&', '2=something&', '3=something']
>>> zz='field'.join(yy)
>>> zz
'http://www.something.com/index.html?field1=thisthing&field2=something&field3=something'
第一步完成了,但我们并没有更改xx,所以对于第二步,您可以只更改相同的代码

yy[1]='1=thisthing&'
将被替换为

yy[2]='1=thatthing&'
我想解释我所做的一切,实际代码如下:

import string
xx='http://www.something.com/index.html?field1=something&field2=something&field3=something'
yy=xx.split('field')
yy[1]='1=thisthing&'
zz='field'.join(yy)
print(zz)

干得很好,一堆坦克!