scrapy中的Unicode字符编码导致lxml解析出错问题

爬虫之lxml报错:ValueError: Unicode strings with encoding declaration are not supported. Please use bytes 文章目录说明:问题以及解决过程。最终的解决方法: 说明: 先说明一下,不要问我网站,因为工作原因,网站不会给你,还望谅解。如果你使用lxml提取数据是报的错误和标题差不多,可以来参考参考我的解决方法,因为我也是第一次遇见这种问题,所以记录下来。 问题以及解决过程。 今天测试一个网站,然后遇见一个问题,使用reqest请求,直接使用resp.text,返回的数据是没有问题的。测试代码如下: resp... 阅读详情

通过lxml库的etree.HTML来处理一段网页源代码,从而生成一个可以被xpath解析的对象,出现下面的情况

response = etree.HTML(response.text)
  File "lxml.etree.pyx", line 2953, in lxml.etree.HTML (src\lxml\lxml.etree.c:66734)
  File "parser.pxi", line 1780, in lxml.etree._parseMemoryDocument (src\lxml\lxml.etree.c:101591)
ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.

根据报错信息推测,可能是因为不支持编码声明的Unicode字符串。Google发现这个问题在2012年就已经有人提交给作者了,但是一直没有被修复。地址在->https://gist.github.com/karlcow/3258330

不过下面的人也给出了解决办法:

response = bytes(bytearray(response.text, encoding='utf-8'))
response = etree.HTML(response)

首先将源代码转化成比特数组,然后再将比特数组转化成一个比特对象。这样就可以绕过这个bug。就可以用xpath提取数据了


参考来源:https://www.cnblogs.com/xieqiankun/p/lxmloldbug.html
花了半天时间整理了xpath最详细的全面教程!拿去用吧 使用时先安装 lxml 包 开始使用 和beautifulsoup类似,首先我们需要得到一个文档树 把文本转换成一个文档树对象 from lxml import etree if __name__ == '__main__': doc=''' <div> <ul> <li class="item-0"><a href="link1.html">first item< 阅读详情

相关推荐

Lumerical Python API实战指南(一)——从数据优化到自动化工作流

本文是Lumerical Python API实战指南,旨在帮助用户从繁琐的手动仿真操作转向智能自动化工作流。文章详细介绍了API环境的零基础搭建、核心操作(会话管理、命令执行与数据交换),并通过参数扫描与自动化分析流水线的实战案例,展示了如何利用Python脚本实现从数据优化到自动化仿真的全过程,显著提升光子设计效率。

xxx12的博客 568

初学者scrapy框架爬取数据不成功,出现ERROR: Spider error processing错误问题的解决方法

初学者scrapy框架爬取数据不成功,出现ERROR: Spider error processing错误问题的解决方法

weixin_54586360的博客 1076

Python 实战:高效绕过 reCAPTCHA v3 的自动化策略

本文深入探讨了使用Python高效绕过reCAPTCHA v3验证的实战策略。文章首先解析了reCAPTCHA v3无感验证的评分机制,随后详细介绍了两种核心解决方案:一是利用CapSolver等专业API服务直接获取有效token,二是通过Playwright模拟真人浏览器行为以提升评分。文中提供了从定位关键参数到代码实现的完整流程,并强调了合规操作与请求频率控制的重要性,为自动化开发者提供了切实可行的技术指南。

weixin_29057065的博客 491

scrapy 解析xml格式的数据

XMLFeedSpider 主要用于 解析 xml格式的数据 创建一个scrapy 项目文件 scrapy startproject xxx 创建一个spider scrapy genspider -t xmlfeed xxx(名字) xxx.com(网站名) 解析的例子为招远市人民政府的数据 代码如下 """ 招远市人民政府 """ import re import scrapy from...

有什么问题回复不及时,可以私聊我。也可以加我的星球:知识爬行者 469

java调用第三方api接口获取数据

弊端,但是并不是每个接口都适用于这套模板,之前写的接口不适用,都是在这个模板里做了定制处理(if 特殊表 -》处理),需要考虑兼容之前的代码,这种兼容代码,有风险会改掉之前的逻辑个人喜欢,有一个接口,写一段代码灵活自由些。2.还有一部分是对post请求的返回数据,做处理,因为json返回的格式如果双方没有约定好,里面数据是多层json嵌套,需要做处理。江同事交接的就是这个代码模板,可以看下源码调试一下,之前交接的视频,也可以看下,主要还是看代码理解快些,将 写好的代码达成jar包,上传到linux上去,

随风不随水的博客 2036

智能驾驶小白必看:MEB低速紧急制动系统的工作原理与传感器配置详解

本文深入解析了MEB低速紧急制动系统的工作原理与传感器配置。该系统作为智能驾驶的关键安全冗余,专为应对停车场、拥堵路段等复杂低速场景设计。文章详细拆解了其如何通过超声波雷达、环视摄像头等传感器融合感知环境,并基于碰撞时间(TTC)等模型进行风险评估与分级制动,最终实现主动防碰撞,是智能驾驶技术实用化的重要体现。

c2d3e4f的博客 1132

第十九篇,爬取bilibili弹幕使用lxml解析遇到ValueError: Unicode strings with encoding declaration are not supported

这篇博客是我看了别人的一篇博客有感而发写的:python爬虫:bilibili弹幕爬取+词云生成想着既然他用beautifulsoup解析的那我lmxl肯定不能落后。 这里是我爬取bilibili视频弹幕遇到的一个问题如下: html = etree.HTML(text) File "src\lxml\etree.pyx", line 3170, in lxml.etree.HTML ...

weixin_43779803的博客 904

别再到处找离线包了!Visual Studio 2022 企业版/社区版离线安装保姆级教程(含工作负载选择指南)

本文提供Visual Studio 2022企业版/社区版离线安装的详细教程,包括工作负载选择指南和批量安装优化策略。针对网络隔离或带宽受限环境,介绍如何制作离线安装包、选择合适的工作负载组合,并分享高级技巧如增量更新和自动化部署,帮助团队高效统一开发环境配置。

weixin_28745821的博客 735

lxml python如何读取xml到本地_简单粗暴的使用lxml从网页HTML/XML中提取数据

Python 的 lxml 模块是一个非常好用且性能高的HTML、XML解析工具,通过它解析网页,爬虫就可以轻松的从网页中提取想要的数据。lxml是基于C语言的libxml2和libxslt库开发的,所以速度是相当的快。使用lxml提取网页数据的流程要从网页里面提取数据,使用lxml需要两步:第一步,用lxml把网页(或xml)解析成一个DOM树。这个过程,我们可以选择etree、etree.HT...

weixin_39721009的博客 849

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统

STM32H7B0VBT6使用Free RTOS配置SD卡+Fatfs文件管理系统,记录配置过程

Jack的小窝 5943

手把手教你用Microsoft AEC Challenge数据集训练自己的回声消除模型(附完整代码)

本文详细介绍了如何使用Microsoft AEC Challenge数据集训练专业的回声消除模型,包括环境准备、数据清洗、模型架构设计、训练流程和实际部署注意事项。通过完整的代码示例和实战指南,帮助开发者快速掌握AEC技术,提升语音通信系统的回声消除效果。

weixin_27697385的博客 460

零基础学Python:从环境搭建到数据分析的完整实战路线

编程语言的学习往往卡在理论到实践的跨越,Python入门也不例外。作为一门语法简洁、生态成熟的动态语言,Python凭借requests、BeautifulSoup、pandas等库,大幅降低了网络请求解析与数据处理的门槛,成为爬虫开发与数据分析领域的首选工具。其核心价值在于让初学者聚焦业务逻辑,而非底层协议细节。在实际应用中,从配置开发环境、掌握变量循环等基础语法,到抓取网页数据、清洗缺失值、分组统计,再到借助matplotlib输出可视化图表,构成了一条可操作的实践闭环。理解HTTP请求原理、DataF

weixin_30522983的博客 269

【多目标跟踪】ByteTrack复现(有yolov5例子)

1.环境 ubuntu16.04 cuda10.1 cudnn7 python3.6 Cython matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2 Pillow PyYAML>=5.3 scipy>=1.4.1 tensorboard>=2.2 torch>=1.7.0 torchvision>=0.8.1 tqdm>=4.41.0 seaborn>=0.11.0 easydic

聿默的博客 1万+

Python 学习 ---> 模块、pypi ( 模块库 )、添加模块路径

什么是 模块 在 Python 中,一个.py文件就是一个模块(Module)。模块的名字就是文件的名字。在模块内部,通过全局变量__name__可以获取模块名(即字符串) 模块作用 为了实现代码的复用,通常会把一些其他程序中重用的代码拿出来单独放在一个程序文件中,

freeking101的博客 3486

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

requests的content与text导致lxml的解析问题

使用requests获取了新浪微博的源代码,通过lxml库的etree.HTML来处理一段网页源代码,从而生成一个可以被xpath解析的对象。 selector = etree.HTML(html) 遇到报错: selector = etree.HTML(html) File "lxml.etree.pyx", line 2953, in lxml.etree.HTML (src\

u013183319的博客 603

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python中etree是什么意思_对象化和etree元素

我编写的模块可以很好地处理测试数据文件,但完全是基于flickrapi的实时数据。在在经历了几天的挫折之后(看,我确实有很多事情要做!)我想我找到了问题,但我不知道如何解决它。在内部测试数据返回的类型()为:外部测试数据返回的type()为:##打开&amp;读取外部XMLLive data返回的type()为:'xml.etree.ElementTree.Element'>在模块的...

weixin_39757265的博客 1730

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【python】报错lxml.etree.XPathEvalError: Invalid expression

报错信息: Traceback (most recent call last): File “c:\Users\86130\Desktop\Study\python\spider_learning\hello_spider.py”, line 6, in text = ht.xpath(xpath) File “src\lxml\etree.pyx”, line 1583, in lxml.et...

dxtql的博客 9586

lxml包没有etree模块和parse报错处理

lxml包没有etree模块的解决方法: 环境:python3.7+ lxml4.4.4 因为etree是C语言写的,所以在import时,不会有提示,直接输入即可 from lxml import etree 在使用etree.parse时报错,原因:该方法默认使用的是“XML”解析器,所以如果碰到不规范的html文件时就会解析错误 htmlElement = e...

指尖魔法师 1万+

python3 lxml解析html_解析HTML:Python中的LXML错误

I am writing a simple script to fetch the big grey table from here.The code I have is the following:import urllib2from lxml import etreehtml = urllib2.urlopen("http://www.afi.com/100years/movies10.asp...

weixin_39809584的博客 369

lxml简明教程

Python 标准库中自带了 xml 模块,但是性能不够好,而且缺乏一些人性化的 API,相比之下,第三方库 lxml 是用 Cython 实现的,而且增加了很多实用的功能,可谓爬虫处理网页数据的一件利器。lxml 大部分功能都存在 lxml.etree中,所以下文都假定已经执行了from lxml import etree解析 XML 字符串网页下载下来以后是个字符串的形式,使用etree.fr...

hellocsz的博客 8850

python lxml 库

html = etree.HTML(str/bytes) 参数可以是str或bytes类型,返回值是etree._Element。 调用etree.parse('hello.html'),参数是文件路径,返回值是etree._ElementTree。 etree.tostring(html,encoding='unicode') 不加编码,返回bytes,加了返回str。 ...

weixin_30363817的博客 195

使用lxml的etree读取xml时的问题:ValueError: Unicode strings with encoding declaration are not supported.

ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration. 原xml文件内容: <?xml version="1.0" encoding="UTF-8"?> <dataset...

suiyuan2009的专栏 5007

Python使用lxml解析HTML response

lxml是一个功能强大、易于使用的Python第三方库,用来解析XML和HTML。在基于HTTP的web服务中,经常需要从HTML格式的response中提取某个我们需要的信息。这时,lxml库就能派上用场。from lxml import etreeresponse = '''<!DOCTYPE html> <html> <head> <title>This is a title</t

测试不将就 3264
下一篇: postgres数据库添加序列id
copeming
博客等级 码龄9年 2粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值