鱼C论坛

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

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

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

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

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

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

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

先上xml文件

  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <!--  Copyright w3school.com.cn -->
  3. <note>
  4.         <to>George</to>
  5.         <from>John</from>
  6.         <heading>Reminder</heading>
  7.         <body>Don't forget the meeting!</body>
  8. </note>
复制代码


想获取xml文件里的body字段的文本,总是报错,我还没好好学,先请大神指点如何修改
  1. import requests
  2. from lxml import etree
  3. def main():
  4.     url = 'https://www.w3school.com.cn/example/xmle/note.xml'
  5.     headers = {'user-agent': 'firefox'}
  6.     r = requests.get(url, headers=headers)
  7.     html = etree.XML(r.text)
  8.     result = html.xpath('.//body')
  9.     print(result[0].text)
  10. if __name__ == '__main__':
  11.     main()
复制代码

最佳答案
2021-5-29 09:16:18
lqq123 发表于 2021-5-29 08:44
还是会报错,已附上测试的url,抓取body字段内容,请大神指点
  1. html = etree.XML(r.content)
复制代码
微信截图_20210529084100.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-28 17:49:30 From FishC Mobile | 显示全部楼层
你这个是解析网页的,解析文件你试试
xml_file = etree.parse(r'd:\test.xml')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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


  2. html = etree.parse('test.xml', etree.XMLParser())
  3. result = html.xpath('.//CustomerName')
  4. print(result[0].text)
复制代码



  1. import xml.etree.ElementTree as ET


  2. tree = ET.parse('test.xml')
  3. root = tree.getroot()
  4. result = root.findall('.//CustomerName')
  5. print(result[0].text)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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


求教,如果是xml网页呢,需要怎么加url
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

网页一般都是html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

网页一般是HTML。
把你想爬的网页发上来,把想爬的内容说清楚。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

微信图片_20210528181028.png
我们内部有个接口查询的地址,查询出来是xml格式的网页,我需要从这上面抓取字段
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  1. import requests
  2. from lxml import etree


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


  10. if __name__ == '__main__':
  11.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


还是会报错,已附上测试的url,抓取body字段内容,请大神指点

  1. import requests
  2. from lxml import etree
  3. def main():
  4.     url = 'https://www.w3school.com.cn/example/xmle/note.xml'
  5.     headers = {'user-agent': 'firefox'}
  6.     r = requests.get(url, headers=headers)
  7.     html = etree.XML(r.text)
  8.     result = html.xpath('.//body')
  9.     print(result[0].text)
  10. if __name__ == '__main__':
  11.     main()
复制代码

微信截图_20210529084100.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-29 09:16:18 | 显示全部楼层    本楼为最佳答案   
lqq123 发表于 2021-5-29 08:44
还是会报错,已附上测试的url,抓取body字段内容,请大神指点
  1. html = etree.XML(r.content)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-29 09:46:14 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 13:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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