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的Django框架与认证系统整合的方法
Jul 24 Python
关于Python面向对象编程的知识点总结
Feb 14 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
python实现代码统计器
Sep 19 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
MoviePy简介及Python视频剪辑自动化
Dec 18 Python
python 实现德洛内三角剖分的操作
python 三边测量定位的实现代码
python如何读取.mtx文件
Apr 22 #Python
Python中tkinter的用户登录管理的实现
python爬虫之利用selenium模块自动登录CSDN
Python数据清洗工具之Numpy的基本操作
Python基础之Socket通信原理
You might like
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
python PIL模块与随机生成中文验证码
2016/02/27 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
利用python提取wav文件的mfcc方法
2019/01/09 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
社区国庆节活动总结
2015/03/23 职场文书
素质拓展训练感想
2015/08/07 职场文书
java泛型通配符详解
2021/07/25 Java/Android
无线电知识基础入门篇
2022/02/18 无线电
vue elementUI批量上传文件
2022/04/26 Vue.js