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 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 Python
详解python 爬取12306验证码
May 10 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
Python笔记之工厂模式
Nov 20 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Python使用type动态创建类操作示例
Feb 29 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python实现SMTP邮件发送
Jun 16 Python
Python读写锁实现实现代码解析
Nov 28 Python
python 如何对logging日志封装
Dec 02 Python
pandas统计重复值次数的方法实现
Feb 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重定向的3种方式
2013/03/07 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
vue的webcamjs集成方式
2020/11/16 Javascript
js实现随机点名功能
2020/12/23 Javascript
Python使用MONGODB入门实例
2015/05/11 Python
python数组过滤实现方法
2015/07/27 Python
Python如何实现文本转语音
2016/08/08 Python
Python 备份程序代码实现
2017/03/06 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
Python Django基础二之URL路由系统
2019/07/18 Python
django框架cookie和session用法实例详解
2019/12/10 Python
tensorflow 实现数据类型转换
2020/02/17 Python
Python PIL库图片灰化处理
2020/04/07 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
某公司面试题
2012/03/05 面试题
办公室文秘自我鉴定
2013/09/21 职场文书
早餐连锁店计划书
2014/01/08 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
golang正则之命名分组方式
2021/04/25 Golang