博客
关于我
爬取网页时调用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/

你可能感兴趣的文章
理解Docker ulimit参数
查看>>
理解Library of Congress Cataloging-in-Publication Data
查看>>
理解Python系统下的时间格式
查看>>
Python语言'类'概念再理解
查看>>
OpenAI Gym简介及初级实例
查看>>
Ubuntu 18.04 zip压缩文件及其文件 夹中的所以 内容
查看>>
int 转 CString
查看>>
Edit编辑框自动换行与长度
查看>>
低通滤波器的设计
查看>>
窄带随机过程的产生
查看>>
随机四则运算
查看>>
Java面向对象
查看>>
JAVA带标签的break和continue
查看>>
Java获取线程基本信息的方法
查看>>
Java集合Collection
查看>>
SpringBoot快速入门
查看>>
医疗管理系统-手机快速登录和SpringSecurity权限控制
查看>>
vue源码分析(MVVM篇)
查看>>
React(八)- ReactUI组件库及Redux的使用
查看>>
TypeScript系列文章导航
查看>>