2012-09-28 72 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'不僅僅足夠了。 –