【问题标题】:parsing xml and html page with lxml and requests package in python在python中使用lxml和requests包解析xml和html页面
【发布时间】:2017-03-19 17:31:45
【问题描述】:

我一直在尝试通过在 python 中使用 lxml 和 requests 包来解析 xml 和 html 页面。为此,我使用以下代码:

在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 但我不知道如何在此代码中添加设置编码

【问题讨论】:

    标签: python parsing encoding python-requests lxml


    【解决方案1】:

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

    重要的理解:

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

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

    r.text - 根据official doc 它已经是r.content 的解码版本

    遵循 unicode 标准,我习惯了r.text,但您仍然可以使用手动解码您的内容

    r.content.decode(r.encoding)
    

    希望对你有帮助。

    【讨论】:

    • 我尝试了 tree = html.fromstring(req.text) 但带有编码声明的 Unicode 字符串不受 lxml 支持并且不起作用
    • 为我工作。我尝试了 ISO-8859-1、UTF-8 页面。您使用哪个 lxml 版本?你能提供一个你请求页面的链接吗?
    • url = "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)
    • Rustem K 非常感谢您回答了我的问题
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多