0

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

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

并一次替换每个参数,同时保持其他参数不变,并从 Web 服务器获得响应(即首先我们将 field1 设置为不同的值,字段 2 和 3 将保持其原始值。然后我们将更改字段 2 为单独的值,字段 1 和 3 将保持其原始值)。我首先将完整链接分解为多个列表(一个带有页面路径,一个带有参数,一个带有参数名称,一个带有值),但我无法得到任何工作它重新组合成完整链接以传回 Web 服务器。所以我的问题是我是否接近正确的道路?有没有办法用 httplib 或 urllib 以更简单的方式做到这一点?再次感谢!

4

2 回答 2

1

在处理 HTTP 时,使用requests库会更好,然后直接使用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))
于 2013-10-13T12:49:44.200 回答
0

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

假设首先你的 field1 的值从 'something' 到 'thisthing',然后 field2 从 'something' 到 'thatthing',然后 field3 从 'something' 到 'thosething',然后执行以下操作:

>>> 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)
于 2013-10-13T14:09:25.573 回答