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基于checksum计算文件是否相同的方法
Jul 09 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
详解Python文本操作相关模块
Jun 22 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
python实现数据分析与建模
Jul 11 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
python自动识别文本编码格式代码
Dec 26 Python
Python类中self参数用法详解
Feb 13 Python
python opencv肤色检测的实现示例
Dec 21 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
简单的php文件上传(实例)
2013/10/27 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
python调用cmd复制文件代码分享
2013/12/27 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python时间日期操作方法实例小结
2020/02/06 Python
Python线程threading模块用法详解
2020/02/26 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
成功的酒店创业计划书
2013/12/27 职场文书
销售简历自我评价
2014/01/24 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
人事任命书范文
2014/06/04 职场文书
二手房购房协议书范本
2014/10/05 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
房屋租赁意向书范本
2015/05/09 职场文书