博客
关于我
爬取网页时调用tostring()中文乱码("&#数字;")解决方案
阅读量:351 次
发布时间:2019-03-04

本文共 1113 字,大约阅读时间需要 3 分钟。

  1. 出现乱码的代码
import requestsimport refrom lxml import etreewith open('real_case.html', 'r', encoding='utf-8') as f:    c = f.read()tree = etree.HTML(c)table_element = tree.xpath("//div[@class='table-box'][1]/table/tbody/tr")#正则表达式过滤掉<>pattern1_attrib = re.compile(r"<.*?>")for row in table_element:    try:        td1 = row.xpath('td')[0]        #调用tostring()后出现乱码        s1 = etree.tostring(td1).decode('utf-8')        s1 = pattern1_attrib.sub('', s1)        print(s1)    except Exception as error:        pass

乱码:

在这里插入图片描述

  1. 修正过后的代码
    引入HTML包,使用unescape()方法
import requestsimport refrom lxml import etree#引入HTML包import htmlwith open('real_case.html', 'r', encoding='utf-8') as f:    c = f.read()tree = etree.HTML(c)table_element = tree.xpath("//div[@class='table-box'][1]/table/tbody/tr")pattern1_attrib = re.compile(r"<.*?>")for row in table_element:    try:        td1 = row.xpath('td')[0]        s1 = etree.tostring(td1).decode('utf-8')        s1 = pattern1_attrib.sub('', s1)        # unescape() 此函数使用HTML5标准定义的规则将字符转换成对应的unicode字符。        s1 = html.unescape(s1)        print(s1)    except Exception as error:        pass

结果:

在这里插入图片描述

转载地址:http://ltar.baihongyu.com/

你可能感兴趣的文章
本校暑假训练营11_Python数据分析入门7-网络1
查看>>
本校暑假训练营12_Python数据分析入门7-网络2
查看>>
数据库SQL实战3_获取所有非manager的员工emp_no
查看>>
JVM篇-结合源码分析垃圾收集器的类型
查看>>
Warning: The core is locked up的解决办法
查看>>
奔涌吧 后浪!!! 哔哩哔哩 何冰
查看>>
【JVM系列】JDK 内置工具
查看>>
【JDK源码分析系列】ArrayBlockingQueue源码分析
查看>>
【网络通信 -- 直播】音视频常见封装格式 -- MEPG2 TS
查看>>
【C/C++基础进阶系列】C/C++ 对象模型 -- 类基础知识总结(三)
查看>>
【C/C++基础进阶系列】C/C++ 对象模型 -- 对象语义
查看>>
Spring 与使用STOMP消息
查看>>
Linux 查看系统语言
查看>>
十 一、C语言创建桌面程序:单选按钮、复选框和分组框控件
查看>>
Mysql错误: ERROR 1205: Lock wait timeout exceeded解决办法
查看>>
Java Swing JList:列表框组件
查看>>
AngularJS $q
查看>>
jQuery中的动画
查看>>
Linux host命令
查看>>
MongoDB 查询分析
查看>>