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生成二维码的实例详解
Oct 29 Python
手把手教你用python抢票回家过年(代码简单)
Jan 21 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
python解析含有重复key的json方法
Jan 22 Python
如何通过python画loss曲线的方法
Jun 26 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
Django多进程滚动日志问题解决方案
Dec 17 Python
PyTorch中permute的用法详解
Dec 30 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
第十四节 命名空间 [14]
2006/10/09 PHP
一些关于PHP的知识
2006/11/17 PHP
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
Python 数据结构之旋转链表
2017/02/25 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
董事长助理岗位职责
2014/02/18 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
关于环保的演讲稿
2014/05/10 职场文书
python - asyncio异步编程
2021/04/06 Python
Python图像处理之图像拼接
2021/04/28 Python