Python XPath解析html出现⋆解决方法 html出现#123;解决方法

前言

爬网页又遇到一个坑,老是出现â乱码,查看html出现的是&#数字;这样的。

网上相关的“Python字符中出现&#的解决办法”又没有很好的解决,自己继续冲浪,费了一番功夫解决了。

这算是又加深了一下我对这些iso、Unicode编码的理解。故分享。

问题

用Python的lxml解析html时,调用text()输出出来的结果带有â这样的乱码:

网页原页面展示:

爬取代码:

url = "xxx"response = requests.request("GET", url)html = etree.HTML(response.text)# 直接调用text函数
description = html.xpath('//div[@class="xxx"]/div/div//text()')
# 直接打印
for desc in description:print(desc)

原因

不用说自然是编码的问题。下面教大家排查和解决。

排查与解决

首先查看返回的响应是如何编码的:

response = requests.request("GET", url, proxies=proxy)
# 得到响应之后,先检查一下它的编码方式
print(response.encoding)

结果如下:

然后根据这个编码的方式再来解码:

html = etree.HTML(response.text)description = html.xpath('//div[@class="xxx"]/div/div//text()')for desc in description:# print(desc)# 根据上面的结果,用iso88591来编码,再解码为utf-8print(desc.encode("ISO-8859-1").decode("utf-8"))

 结果如下:

完整代码:

url = "xxx"response = requests.request("GET", url)
print(response.encoding)html = etree.HTML(response.text)description = html.xpath('//div[@class="xxx"]/div/div//text()')for desc in description:print(desc.encode("ISO-8859-1").decode("utf-8"))# print(desc)

总结

网上有用python2流传下来的HTMLParser的,还有用python3的html包的,效果都不好。

不过也有改response的编码方式的,就是这样:

url = "xxx"response = requests.request("GET", url)# html = etree.HTML(response.text)
html = etree.HTML(response.content)  # 改用二进制编码# 直接调用text函数
description = html.xpath('//div[@class="xxx"]/div/div//text()')
# 直接打印
for desc in description:print(desc)

也能成功解析。

参考文章: 

Xpath编码问题解决

xpath获取标签属性乱码解决(成长日记)_xpath如何获取标签中的文本打印出来是问号-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习第二篇——C语言基础12

目录 指针 1.const指针 2.void 3.函数指针和指针函数: 1.指针函数: 2.函数指针: 4.C语言中二级指针使用场景: 1.指针数组传参时: 2.函数体内想修改函数体外指针变量值的时 构造数据类型: 数据类型: 1.基本数据类型: 1, int 2,…

MySQL原理(二)存储引擎(3)InnoDB

目录 一、概况: 1、介绍: 2、特点: 二、体系架构 1、后台线程 2、内存池(缓冲池) 三、物理结构 1、数据文件(表数据和索引数据) 1.1、作用: 1.2、共享表空间与独立表空间 …

计算机网络——静态路由的配置实验

1.实验题目 实验四:静态路由的配置 2.实验目的 1.了解路由器的基本配置。 2.实现对路由器的静态配置。 3.了解Ping命令和trace的原理和使用 3.实验任务 (1)路由器的基本配置:关闭域名解释;设置路由器接口 IP 地…

DVWA csrf代码分析

LOW级别 源码如下&#xff1a; <?phpif( isset( $_GET[ Change ] ) ) {$pass_new $_GET[ password_new ]; // 获取用户输入的新密码$pass_conf $_GET[ password_conf ]; //获取用户输入的确认密码// Do the passwords match?if( $pass_new $pass_conf ) { …

网络地址相关函数一网打尽

这块的函数又多又乱&#xff0c;今天写篇日志&#xff0c;以后慢慢补充 1. 网络地址介绍 1.1 ipv4 1.1.1 点、分十进制的ipv4 你对这个地址熟悉吗&#xff1f; 192.168.10.100&#xff0c;这可以当做一个字符串。被十进制数字、 “ . ”分开。IP地址的知识就不再多讲…

一文速学-selenium高阶操作连接已存在浏览器

前言 不得不说selenium不仅在自动化测试作为不可或缺的工具&#xff0c;在数据获取方面也是十分好用&#xff0c;能够十分快速的见到效果&#xff0c;这都取决于selenium框架的足够的灵活性&#xff0c;甚至在一些基于web端的自动化办公都十分有效。 通过selenium连接已经存在…

【解决】No match for argument: gflags-devel

背景 在centos-8中安装gflags-devel&#xff0c;直接dnf安装&#xff0c;失败了。 [rootpcs2 ~]# sudo dnf -y install gflags-devel Extra Packages for Enterprise Linux 8 - x86_64 Extra Packages…

SpringBoot整合RabbitMQ快速实战

目录 引入依赖 配置文件 不同模式下使用springboot收发消息 直连模式 生产者 消费者 Fanout模式 生产者 消费者 Topic主题模式 生产者 消费者 Headers模式 生产者 消费者 补充Quorum队列 生产者 消费者 引入依赖 <dependency><groupId>org.springf…

什么是Vue Vue入门案例

一、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套 构建用户界面 的 渐进式 框架 Vue2官网&#xff1a;Vue.js 1.什么是构建用户界面 基于数据渲染出用户可以看到的界面 2.什么是渐进式 所谓渐进式就是循序渐进&#xff0c;不一定非得把V…

华为radius认证

组网需求 如图1所示&#xff0c;用户同处于huawei域&#xff0c;Router作为目的网络接入服务器。用户需要通过服务器的远端认证才能通过Router访问目的网络。在Router上的远端认证方式如下&#xff1a; Router对接入用户先用RADIUS服务器进行认证&#xff0c;如果认证没有响应…

(M)UNITY三段攻击制作

三段攻击逻辑 基本逻辑&#xff1a; 人物点击攻击按钮进入攻击状态&#xff08;bool isAttack&#xff09; 在攻击状态下&#xff0c; 一旦设置的触发器&#xff08;trigger attack&#xff09;被触发&#xff0c;设置的计数器&#xff08;int combo&#xff09;查看目前攻击…

【美团】无人机-大数据开发工程师

更新时间&#xff1a;2024/01/29 工作地点&#xff1a;北京市 事业群&#xff1a;到家事业群 工作经验&#xff1a;3年 部门介绍 为了更好地提升城市即时配送的效率与体验&#xff0c;美团于2017年启动了无人机配送服务的探索&#xff0c;通过科技创新推动履约工具变革&#x…

基于JAVA+SpringBoot+Vue的前后端分离的美食分享推荐平台2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今社会&#xff0…

代码随想录算法训练营day35 || 860.柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

视频讲解&#xff1a; 贪心算法&#xff0c;看上去复杂&#xff0c;其实逻辑都是固定的&#xff01;LeetCode&#xff1a;860.柠檬水找零_哔哩哔哩_bilibili 贪心算法&#xff0c;不要两边一起贪&#xff0c;会顾此失彼 | LeetCode&#xff1a;406.根据身高重建队列_哔哩哔哩_b…

自然语言处理(NLP)技术使用

自然语言处理&#xff08;NLP&#xff09;技术使用 以下是一些自然语言处理&#xff08;NLP&#xff09;技术的例子&#xff1a;以上只是一些NLP技术的例子&#xff0c;还有许多其他的技术和应用&#xff0c;如文本分类、文本生成、问答系统等。NLP技术的发展正逐渐改变人们与计…

手撕红黑树

目录 性质 插入规则 调整方法 插入在grandfather的左子树 uncle存在为红色&#xff08;变色&#xff09; uncle不存在或存在为黑色&#xff08;旋转变色&#xff09; 插入在grandfather的右子树 uncle存在且为红色&#xff08;变色&#xff09; uncle不存在或者存在为黑…

Whatsapp 相关(七) -网络请求

本篇主要用来完善上篇文章 frida 监测网络请求的. whatsapp相关(五)- frida监测网络请求 1: 脚本 本次的脚本与上次的区别是,之前只能输出请求的地址,本次优化后,可输出请求参数,结果等. 代码如下: Java.perform(function () {var HttpURLConnection Java.use(java.net.H…

Bean 的作用域有哪些?

Spring 中 Bean 的作用域通常有下面几种&#xff1a; singleton : IoC 容器中只有唯一的 bean 实例。Spring 中的 bean 默认都是单例的&#xff0c;是对单例设计模式的应用。prototype : 每次获取都会创建一个新的 bean 实例。也就是说&#xff0c;连续 getBean() 两次&#x…

Vue之初识路由

路由有什么用&#xff1f; 在我们修改地址栏路径时&#xff0c;切换显示匹配的组件 VueRouter的使用(5 2) 5个基础步骤(固定) 1.下载:下载 VueRouter模块到当前工程&#xff0c;版本3.6.5 yarn add vue-router3.6.5 npm i vue-router3.6.52.引入 import VueRouter from v…

如何在DBeaver中重命名数据库

前言 DBeaver是一款强大的开源通用数据库管理和开发工具&#xff0c;支持多种数据库类型。在某些数据库系统中&#xff0c;你可以直接通过DBeaver的图形界面来重命名数据库名称。本文将详细介绍如何在DBeaver中进行数据库重命名操作。 重要提示&#xff1a; 对于不同的数据库…