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实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 Python
教你用Python脚本快速为iOS10生成图标和截屏
Sep 22 Python
OpenCV实现人脸识别
Apr 07 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 Python
python实现简单名片管理系统
Nov 30 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
python字符串的拼接方法总结
Nov 18 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
Python趣味入门教程之循环语句while
Aug 26 Python
Python编解码问题及文本文件处理方法详解
Jun 20 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数学运算与数据处理实例分析
2016/04/01 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
菜鸟javascript基础资料整理2
2010/12/06 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
JS重载实现方法分析
2016/12/16 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
python制作一个桌面便签软件
2015/08/09 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
对python中各个response的使用说明
2020/03/28 Python
Python之多进程与多线程的使用
2021/02/23 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
意向书范文
2014/03/31 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
客房部经理岗位职责
2015/02/02 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
mysql查询的控制语句图文详解
2021/04/11 MySQL
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android