0

私は次のようなURLを持っています:

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

ブラウザでこのURLにアクセスすると、xmlが返されます。

私はlxmlを介してそのURLの応答を解析しようとしています:

tree = etree.parse(url)

ここでの問題は、etreeがパーセント文字をエンコードし、URLが次のようになることです。

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

qパラメータの値をエンコードしないと、URL全体が台無しになります。

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

リクエストを送信する前に、そのURLに文字を入れないようにlxmlに指示する方法はありますか?

4

1 に答える 1

1

これはlxmlのURL処理のバグだと思います。lxmlトラッカーで既存のレポートを確認し、まだ存在しない場合はレポートする必要があります。

今のところ回避策はurllib2、代わりにURLを取得するために使用することです。

import urllib2

resp = urllib2.urlopen(url)
tree = etree.parse(resp)
于 2012-09-28T08:13:52.383 に答える