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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
Python3中多线程编程的队列运作示例
Apr 16 Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
python清除字符串里非字母字符的方法
Jul 02 Python
python开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
django框架创建应用操作示例
Sep 26 Python
Pyecharts地图显示不完成问题解决方案
May 11 Python
Django中的AutoField字段使用
May 18 Python
Python descriptor(描述符)的实现
Nov 15 Python
python 实现德洛内三角剖分的操作
python 三边测量定位的实现代码
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
Python基础之Socket通信原理
You might like
Zerg兵种介绍
2020/03/14 星际争霸
php简单smarty入门程序实例
2015/06/11 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python生成8位随机字符串的方法分析
2017/12/05 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
Pytorch 神经网络—自定义数据集上实现教程
2020/01/07 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
模范家庭事迹材料
2014/02/10 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers