【Beautifulsoup】如何在网页中通过中文text获取标签
来源:互联网 发布:嫁给程序员好吗 编辑:程序博客网 时间:2024/05/21 09:43
说明:通常我们所看到的网页几乎都是utf-8编码,这点在网页源码中搜索“charset”可以看到。也可以点击此处的方法查看,我们在使用beautifulsoup的时候,难免会有使用text属性来查找标签的时候,英文还好,查找中文的时候(bs.find(text=('钟表')),返回的结果几乎都是None,下面说说这个问题。
当运行以下代码时:
html = urllib2.urlopen(url)bs = BeautifulSoup(html,'lxml')
网页源码将经历一次编码转换,它的原编码是utf8,我们的bs在使用lxml库解析网页时会将网页源码解码为Unicode编码数据,bs的默认解码方式是utf8,很多时候不需要改,此时代码得到的bs对象已经是解码后的Unicode编码的数据了,当我们接着运行以下代码时:
t = bs.find(text=(u"钟表品牌分类")) print t
若你的代码环境是windows,那你的代码第一行应该有# -*- coding: utf-8 -*-,意思是声明编译器的默认编码是utf8,以支持中文的输入;ok,这样一来我们输入的所有中文都将会是utf8编码,你或许已经明白了,是的,bs对象是Unicode,查找模型是utf8,狗窝里找母猫,当然一无所获。明白了原理,问题就好解决:
t = bs.find(text=(u"钟表品牌分类")) print t把text文字转为unicode编码的数据即可。若你爬取的网页源码的编码不是utf8,那就在解析的时候指定解码形式:
bs = BeautifulSoup(html.text,'lxml',from_encoding='gb2312')当然,如果使用的是强大的requests库,那么在使用requests.get(url).text的时候就已经解码为unicode形式的数据了,bs得到unicode的数据后,会直接进行解析,无需转码。
资源群(IT各领域、非技术)645026970
阅读全文
1 0
- 【Beautifulsoup】如何在网页中通过中文text获取标签
- 如何在网页中使用H1标签
- 如何通过GPS定位器,通过网页请求获取:经纬度信息和速度,以及中文地址信息
- 如何获取中文网页内容?
- Label.bind()中如何通过鼠标单击获得标签内容text属性
- html中点击a标签获取text
- 在数据库中通过text文本存储中文字符出现如图下所示错误
- python通过BeautifulSoup分页网页中的超级链接
- 如何在C#中获取指定网页源码的示例
- 如何在.cs代码中获取textarea标签的值?
- BeautifulSoup 解析中文网页乱码问题
- java中通过url获取网页内容,中文显示是乱码
- 在网页中通过userAgent获取手机获取手机操作系统类型
- 通过wininet获取网页源码在例子
- 如何在网页中插入Skype链接标签,如www.haoyunlifu.com中Skype链接
- 如何在网页中通过@font-face中嵌入中文字体(Web font)
- 在网页中使用Applet的标签
- 在网页中使用Applet的标签
- Centos之Keepalived安装-yellowcong
- 高数 07.04 多元复合函数的求导法则
- Java数据结构-线性表,栈,队列
- QT编程error记录(一)
- NIPS 2017 五大比赛全汇总,看看优胜的中国选手有哪些 | 快讯
- 【Beautifulsoup】如何在网页中通过中文text获取标签
- Linux网络编程1
- Unity5 GI与PBS渲染从用法到着色代码
- PaddlePaddle三行代码入门 | 公开课
- Python入门(05) -- 类
- 赋值兼容 与 虚函数
- 高数 07.05 隐函数的求导方法
- Dots are not allowed in element names, please remove it from UserMapper.xml
- 人工智能企业自动化的关键现状和战略影响