鱼C论坛

 找回密码
 立即注册
查看: 1326|回复: 10

[已解决]【我是小白】爬取xml文件里的字段内容,报错ValueError: Unicode strings with enc...

[复制链接]
发表于 2021-5-28 17:28:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lqq123 于 2021-5-29 09:11 编辑

使用lxml爬取xml网页里的body字段,请大神指点

先上xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--  Copyright w3school.com.cn -->
<note>
        <to>George</to>
        <from>John</from>
        <heading>Reminder</heading>
        <body>Don't forget the meeting!</body>
</note> 

想获取xml文件里的body字段的文本,总是报错,我还没好好学,先请大神指点如何修改
import requests
from lxml import etree
def main():
    url = 'https://www.w3school.com.cn/example/xmle/note.xml'
    headers = {'user-agent': 'firefox'}
    r = requests.get(url, headers=headers)
    html = etree.XML(r.text)
    result = html.xpath('.//body')
    print(result[0].text)
if __name__ == '__main__':
    main()
最佳答案
2021-5-29 09:16:18
lqq123 发表于 2021-5-29 08:44
还是会报错,已附上测试的url,抓取body字段内容,请大神指点
html = etree.XML(r.content)
微信截图_20210529084100.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-28 17:49:30 From FishC Mobile | 显示全部楼层
你这个是解析网页的,解析文件你试试
xml_file = etree.parse(r'd:\test.xml')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-28 17:53:36 | 显示全部楼层
解析本地xml:
from lxml import etree


html = etree.parse('test.xml', etree.XMLParser())
result = html.xpath('.//CustomerName')
print(result[0].text)

import xml.etree.ElementTree as ET


tree = ET.parse('test.xml')
root = tree.getroot()
result = root.findall('.//CustomerName')
print(result[0].text)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-28 18:00:32 | 显示全部楼层
本帖最后由 lqq123 于 2021-5-28 18:03 编辑


求教,如果是xml网页呢,需要怎么加url
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-28 18:04:20 From FishC Mobile | 显示全部楼层
lqq123 发表于 2021-5-28 18:00
求教,如果是xml网页呢,需要怎么加url

网页一般都是html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-28 18:08:33 | 显示全部楼层
lqq123 发表于 2021-5-28 18:00
求教,如果是xml网页呢,需要怎么加url

网页一般是HTML。
把你想爬的网页发上来,把想爬的内容说清楚。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-28 18:12:37 | 显示全部楼层
suchocolate 发表于 2021-5-28 18:08
网页一般是HTML。
把你想爬的网页发上来,把想爬的内容说清楚。

微信图片_20210528181028.png
我们内部有个接口查询的地址,查询出来是xml格式的网页,我需要从这上面抓取字段
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-28 18:46:44 | 显示全部楼层
lqq123 发表于 2021-5-28 18:12
我们内部有个接口查询的地址,查询出来是xml格式的网页,我需要从这上面抓取字段
import requests
from lxml import etree


def main():
    url = 'xxx'
    headers = {'user-agent': 'firefox'}
    r = requests.get(url, headers=headers)
    html = etree.XML(r.text)
    result = html.xpath('.//CustomerName')
    print(result[0].text)


if __name__ == '__main__':
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 08:44:00 | 显示全部楼层

【我是小白】爬取xml文件里的字段内容,报错ValueError: Unicode strings with enc...


还是会报错,已附上测试的url,抓取body字段内容,请大神指点
import requests
from lxml import etree
def main():
    url = 'https://www.w3school.com.cn/example/xmle/note.xml'
    headers = {'user-agent': 'firefox'}
    r = requests.get(url, headers=headers)
    html = etree.XML(r.text)
    result = html.xpath('.//body')
    print(result[0].text)
if __name__ == '__main__':
    main()
微信截图_20210529084100.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-29 09:16:18 | 显示全部楼层    本楼为最佳答案   
lqq123 发表于 2021-5-29 08:44
还是会报错,已附上测试的url,抓取body字段内容,请大神指点
html = etree.XML(r.content)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 09:46:14 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 17:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表