python使用XPath解析数据爬取起点小说网数据


Posted in Python onApril 22, 2021

1. xpath 的介绍

xpath是一门在XML文档中查找信息的语言

优点:

  • 可以在xml中找信息
  • 支持HTML的查找
  • 可以通过元素和属性进行导航

但是Xpath需要依赖xml的库,所以我们需要去安装lxml的库。

安装lxml库

我们先要安装lxml的库,直接在pycharm里安装即可:

python使用XPath解析数据爬取起点小说网数据

XML的树形结构:

python使用XPath解析数据爬取起点小说网数据

元素-元素-属性-文本

使用XPath选取节点:

  • nodename: 选取此节点的所有节点
  • /从根节点选择
  • // 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
  • . 选择当前节点
  • .. 选择当前节点的父节点(此处是两个点,浏览器默认显示3个..)
  • /text() 获取当前路径下的文本内容
  • /@xxx 提取当前路径下标签的属性值

选取节点的表达式举例:

python使用XPath解析数据爬取起点小说网数据

2. 爬取起点小说网

在浏览器中获取书名和作者测试

在谷歌里安装一个xpath的插件

python使用XPath解析数据爬取起点小说网数据

在html中查找book-mid-info

python使用XPath解析数据爬取起点小说网数据

我们要获取小说的名称: 也就是 //div[@class='book-mid-info']/h4/a/txt()

python使用XPath解析数据爬取起点小说网数据

再加一个获取作者:

python使用XPath解析数据爬取起点小说网数据

使用xpath获取起点小说网的数据

# 作者:互联网老辛
# 开发时间:2021/4/8/0008 8:24

import requests
from lxml import etree
url="https://www.qidian.com/rank/yuepiao"
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
#发送请求
resp=requests.get(url,headers)
e=etree.HTML(resp.text) #类型转换,把str转变为class 'lxml.etree._ELement
print(type(e))
names=e.xpath('//div[@class="book-mid-info"]/h4/a/text()')
authors=e.xpath('//p[@class="author"]/a[1]/text()')
print(names)
print(authors)
#名称和作者对应
for name,authors in zip(names,authors):
    print(name,":",authors)

以上就是python使用XPath解析数据爬取起点小说网数据的详细内容,更多关于python XPath解析数据爬取起点小说网的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
python主线程捕获子线程的方法
Jun 17 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
python中的decimal类型转换实例详解
Jun 26 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
Aug 09 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
Aug 23 Python
python实现高斯投影正反算方式
Jan 17 Python
Win10环境中如何实现python2和python3并存
Jul 20 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
python中温度单位转换的实例方法
Dec 27 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 Python
python 实现德洛内三角剖分的操作
python 三边测量定位的实现代码
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
Python基础之Socket通信原理
You might like
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
php查询内存信息操作示例
2019/05/09 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
深入分析python中整型不会溢出问题
2018/06/18 Python
python实现微信小程序自动回复
2018/09/10 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
python实现感知机模型的示例
2020/09/30 Python
Python实现简单的2048小游戏
2021/03/01 Python
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫