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 远程统计文件代码分享
May 14 Python
python单例模式获取IP代理的方法详解
Sep 13 Python
python 实现倒排索引的方法
Dec 25 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
在Python 中实现图片加框和加字的方法
Jan 26 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
python制作抽奖程序代码详解
Jan 15 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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
自动分页的不完整解决方案
2007/01/12 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
Javascript 解疑
2009/11/11 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
javascript每日必学之循环
2016/02/19 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
分享几道你可能遇到的python面试题
2017/07/24 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
vscode 远程调试python的方法
2017/12/01 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
对pandas中Series的map函数详解
2018/07/25 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
QML用PathView实现轮播图
2020/06/03 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
乡镇干部先进事迹材料
2014/02/03 职场文书
大学校园活动策划书
2014/02/04 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
助学金感谢信
2015/01/20 职场文书
婚礼答谢词范文
2015/09/29 职场文书
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js