2012-09-28 50 views
0

我有一个URL看起来是这样的:LXML解析URL符号问题

url = 'http://localhost:8080/?q=abc%26def&other_params=here' 

在浏览器的XML将返回访问这个网址。

我试图解析URL通过LXML响应:

tree = etree.parse(url) 

这里的问题是,etree编码%的焦炭,URL将被

url = 'http://localhost:8080/?q=abc%2526def&other_params=here' 

如果我不编码我的q参数的值,整个网址都搞砸了:

url = 'http://localhost:8080/?q=abc&def&other_params=here' 

有什么办法我可以告诉lxml在发送请求之前不要在该URL中enocde字符?

+0

听起来像一个LXML的bug;你有没有试过[报告](https://launchpad.net/lxml/)呢? –

+0

不是真的,但我会做到这一点,以防万一有人不回答 –

回答

1

我想说这是lxml的URL处理中的一个错误,您应该检查lxml tracker中的现有报告,并在它尚未存在的情况下报告。

对现在的工作就是使用urllib2检索您的网址,而不是:

import urllib2 

resp = urllib2.urlopen(url) 
tree = etree.parse(resp) 
+0

而不是使用'urllib2',我更喜欢'request' ..它执行url编码(万一如果需要GET请求)和所有的东西自动.. – Surya

+0

@Surya:当然,但这是一个额外的依赖。 OP显然已经知道如何urlencode,在这种情况下'urllib2'不仅仅足够了。 –