用lxml解析xml和html页面并在python中请求包

问题描述:

我一直试图通过在python中使用lxml和请求包来解析xml和html页面。我使用下面的代码用于此目的:用lxml解析xml和html页面并在python中请求包

在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) 

此代码工作正常,但对于某些网页无法正常显示的内容和需要设置编码UTF-8,但我不不知道如何在此代码中添加集编码

requests自动解码服务器中的内容。

重要的是理解:

r.content - 包含尚未解码的响应内容

r.encoding - 包含响应的内容编码信息

r.text - 根据它已经解码的版本official docr.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') for root in root: print(item.text) – Snaicher