python-xpath获取html文档的部分内容


Posted in Python onMarch 06, 2020

有些时候我在们需要的用正则提取出html中某一个部分的文字内容,如图:

python-xpath获取html文档的部分内容

获取dd部分的html文档,我们要通过它的一个属性去确定他的位置才可以拿到他这个部分我们可以看到他的这个属性class='row clearfix ',然后用xpath去获取到这部分:

name = tree.xpath("//dd[@class='row clearfix ']")
from lxml import html
import requests
url = 'http://navi.cnki.net/knavi/JournalDetail/GetArticleList?year=2018&issue=04&pykm=DZXU&pageIdx=0&pcode=CJFD'
res = requests.get(url)
tree = html.fromstring(res.text)
name = tree.xpath("//dd[@class='row clearfix ']")
print(name)

如果直接打印他是不能够出来的,

python-xpath获取html文档的部分内容

我们需要对Element进行处理,用到name1 = html.tostring(name[0]),代码如下:

from lxml import html
import requests
url = 'http://navi.cnki.net/knavi/JournalDetail/GetArticleList?year=2018&issue=04&pykm=DZXU&pageIdx=0&pcode=CJFD'
res = requests.get(url)
tree = html.fromstring(res.text)
name = tree.xpath("//dd[@class='row clearfix ']")
name1 = html.tostring(name[0])
print(name1)

打印截图:

python-xpath获取html文档的部分内容

但是大家可以看到里面的等内容并不是中文,原因是我们使用tostring方法输出的是修正后的HTML代码,但是结果是bytes类型,在python中bytes类型是不可以进行编码的,需要转换成字符串,使用代码name1.decode(),此时我们将bytes类型转换为str(字符串)类型。

那么此时我们关键是如何将$#26080;此类的符号转换成汉字!!!那么首先要搞清楚这是什么编码?这类符号是HTML、XML 等 SGML 类语言的转义序列。它们不是”编码“,也就是说我们不能使用utf-8、gbk等编码进行处理,需要使用HTMLParse进行处理,完整代码如下:

from lxml import html
import requests
from html.parser import HTMLParser #导入html解析库
url = 'http://navi.cnki.net/knavi/JournalDetail/GetArticleList?year=2018&issue=04&pykm=DZXU&pageIdx=0&pcode=CJFD'
res = requests.get(url)
tree = html.fromstring(res.text)
name = tree.xpath("//dd[@class='row clearfix ']")
name1 = html.tostring(name[0])
name2 = HTMLParser().unescape(name1.decode())
print(name2)

此时运行结果如下:

python-xpath获取html文档的部分内容

那么此时就已经大功告成了!!!

以上这篇python-xpath获取html文档的部分内容就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的index()方法使用教程
May 18 Python
python中异常报错处理方法汇总
Nov 20 Python
对python中使用requests模块参数编码的不同处理方法
May 18 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
WxPython实现无边框界面
Nov 18 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
python+opencv实现视频抽帧示例代码
Jun 11 Python
Python访问Redis的详细操作
Jun 26 Python
关于python中的xpath解析定位
Mar 06 #Python
Python网络爬虫信息提取mooc代码实例
Mar 06 #Python
appium+python adb常用命令分享
Mar 06 #Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 #Python
python使用paramiko实现ssh的功能详解
Mar 06 #Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 #Python
Python object类中的特殊方法代码讲解
Mar 06 #Python
You might like
牡丹941资料
2021/03/01 无线电
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
pycharm 使用心得(五)断点调试
2014/06/06 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
Python构建XML树结构的方法示例
2017/06/30 Python
Django权限机制实现代码详解
2018/02/05 Python
python 2.7.14安装图文教程
2018/04/08 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
golang import自定义包方式
2021/04/29 Golang
浅谈Python中的正则表达式
2021/06/28 Python
Python实现自动玩连连看的脚本分享
2022/04/04 Python