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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
python实现DES加密解密方法实例详解
Jun 30 Python
python实现读取excel写入mysql的小工具详解
Nov 20 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
python实现kmp算法的实例代码
Apr 03 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
Flask中endpoint的理解(小结)
Dec 11 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python 实现两个线程交替执行
May 02 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 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
收音机的保养
2021/03/01 无线电
PHP教程 预定义变量
2009/10/23 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
php检测文本的编码
2015/07/26 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
vuejs点击class变化的实例
2018/09/05 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
[40:03]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#1EHOME VS Archon
2016/03/02 DOTA
学习python (2)
2006/10/31 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
银行实习鉴定
2013/12/13 职场文书
人民教师求职自荐信
2014/03/12 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
酒店节能降耗方案
2014/05/08 职场文书
抗震救灾标语
2014/06/26 职场文书
欢迎领导标语
2014/06/27 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
工程部岗位职责
2015/02/10 职场文书
预备党员个人总结
2015/02/14 职场文书
奖励申请报告范文
2015/05/15 职场文书
python 如何获取页面所有a标签下href的值
2021/05/06 Python