我想做的事情:
以我仍然可以在另一种方法中使用的方式输出self.out
var的值。
代码
if self.path_object is not None:
dictpath = {}
for path in self.path_object:
parsed = urlparse(path.pathToScan)
if parsed.query:
self.params = parsed.query.split('&', 2)
self.out = list(map(lambda v: v.split("=")[0] +"=" + str(self.fooz), self.params))
dictpath[parsed.geturl()] = self.out
print dictpath
此代码引入一组路径(通过path_object
),然后在&
符号上解析这些路径并将self.fooz
的值附加到其上,然后将其放入字典并输出结果。
结果 它目前输出一个列表(增加间距以便于阅读):
{
u'www.somesite.com/param.php?id=317':
u'id=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]',
u'somesite.com/param.php?id=911¶m2=6¶m3=cat':
[u'id=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]',
u'param2=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]',
u'param3=[<self.fooz>, <self.fooz>, <self.fooz>,<self.fooz>, <self.fooz>, <self.fooz>]']
}
我的问题是,如何在另一种方法中访问此输出,以便我可以遍历每个参数,如:
u'somesite.com/param.php?id=<<<<<self.fooz>>>>>¶m2=6¶m3=cat':
然后
u'somesite.com/param.php?id=911¶m2=<<<<<self.fooz>>>>>¶m3=cat
,然后对路径中的每个参数执行此操作。
所以,我尝试从当前输出请求网址,但requests
不允许像<self.fooz>
那样请求路径,因为它不是有效网址(例如包含某个网站) .com或http://somesite.com)。
非常感谢任何帮助。
非常感谢你!
答案 0 :(得分:1)
你必须再次解析字符串。使用urlparse.parse_qs
(https://docs.python.org/2/library/urlparse.html)。这样做:
import urlparse
s = u'somesite.com/param.php?id=911¶m2=<<<<<self.fooz>>>>>¶m3=cat'
params = urlparse.parse_qs(s[s.find('?') + 1:])
print params
结果是:
{u'param3': [u'cat'], u'id': [u'911'], u'param2': [u'<<<<<self.fooz>>>>>']}
现在您可以迭代params
。