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正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
opencv与numpy的图像基本操作
Mar 08 Python
python爬虫爬取微博评论案例详解
Mar 27 Python
Python如何调用JS文件中的函数
Aug 16 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
详解python datetime模块
Aug 17 Python
python全栈开发语法总结
Nov 22 Python
关于 Python json中load和loads区别
Nov 07 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环境无法上传文件的解决方法
2014/04/30 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
python 排列组合之itertools
2013/03/20 Python
实例讲解Python中的私有属性
2014/08/21 Python
Python入门篇之面向对象
2014/10/20 Python
python实现简单的socket server实例
2015/04/29 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python探索之创建二叉树
2017/10/25 Python
python3的输入方式及多组输入方法
2018/10/17 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
医院检讨书范文
2014/02/01 职场文书
出差报告范文
2014/11/06 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python