2016-11-06 5 views
2

lxmlを使ってxmlとhtmlのページを解析しようとしていて、pythonでパッケージをリクエストしています。私は、この目的のために、次のコードを使用して:Pythonでxmlとhtmlのページをlxmlで解析し、pythonでリクエストするパッケージ

import requests 
import lxml.etree 
url = "" 
req = requests.get(url) 
tree = html.fromstring(req.content) 
root = tree.xpath('') 
for item in root: 
    print(item.text) 

このコードは正常に動作しますが、いくつかのWebページのためにその内容を適切に表示し、UTF-8が、私ドンをコードして設定する必要がありますすることはできませんこのコードでセットエンコーディングを追加する方法を知っている

答えて

0

requestsは、サーバーからのコンテンツを自動的にデコードします。

理解することが重要

r.content - まだ復号化された応答内容

r.encodingが含まれている - 応答のコンテンツのエンコーディング

r.textに関する情報が含まれています - それは、すでにのバージョンをデコードするofficial docに従ってr.content

フォロー中Unicode標準は、私がr.textに慣れるあなたはまだ

r.content.decode(r.encoding) 

を使用して手動であなたのコンテンツをデコードすることができ、それがお役に立てば幸いです。

+0

私はtree = html.fromstring(req.text)を試していますが、エンコード宣言付きのUnicode文字列はlxmlでサポートされていません。 – Snaicher

+0

が動作します。私は両方のISO - 8859 - 1、UTF - 8ページを試みた。どのlxmlバージョンを使用しますか?ページをリクエストするリンクを提供することはできますか? –

+0

url = "http://asretebar.com/rss/feed/?c=1&m=6" req = requests.get(url) #req.encoding = "utf-8" #req.content.decode (req.encoding) tree = html.fromstring(req.text) root = tree.xpath( 'channel/item/title') print(item.text) – Snaicher

関連する問題