本文主要是介绍Python数据爬取【大略总结】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数据采集
数据来源
- 从网上爬取数据
- 从本地系统收集数据
- 文件、数据库等
- 网络数据采集模型
常用数据爬取工具
第三方库实现爬取
Requests、Ixml
灵活,简单
PySpider爬虫框架
- 提供WebUI界面编程及管理爬虫
- 上手快,学习简单
- 对windows操作系统支持很差
Scrapy爬虫框架
- 功能强大
- 可定制性强(可以只用框架的一部分)
- 多线程,爬取效率高
- 可以塔键集群(分布式)
安装配置Scrapy框架
安装Scrapy
conda install scrapy
配置Scrapy环境变量
- 将Anaconda的Scripts文件夹加入到Path环境变量中
创建scrap项目的命令
scrapy startproject 新工程名
创建Spider
scrapy genspider 爬虫名 start url
修改parse()方法,在控制台输出文本
启动Spider
scrapy crawl 爬虫名
Debug爬虫工程(重点)
使用Python脚本执行命令行启动爬虫
- 在项目根目录添加脚本文件
- 调用Scrapy框架的命令执行方法启动爬虫
- cmdline模块
- execute()方法
Scrapy框架组成
spiders文件夹
- 定义爬虫文件
items.py
- 定义框架内数据传输格式
pipelines.py
- 数据保存模块
middlewares.py
- 中间件模块
settings.py
- 框架配置模块
Scrapy返回爬取页面数据
通过解析方法返回爬取页面数据
- parse()方法的response参数
- response对象常用属性和方法
属性或方法 | 作用 |
---|---|
url | 当前返回数据所对应的页面url |
status | http请求状态码 |
meta | 用于request与response之间的数据传递 |
body | 返回页面html源码、如果纯正则表达式匹配数据,需要获得页面html源码 |
xpath() | 使用xpath选择器解析网页 |
css() | 使用css选择器解析网页 |
在Scrapy爬虫框架中提取网页数据的方法
xpath选择器
- 用于选择XML文档中的节点的语言,可以与HTML一起使用
css选择器
- 用于将样式应用于HTML文档的语言
- 将样式与特定的HTML元素相关联
- Scrapy中css选择器的代码最后也会转换成xpath选择器的代码
正则表达式
- 提取非标签内容
xpath语法
- 使用路径表达式来选取XML文档中的节点活结点集
表达式 | 描述 |
---|---|
nodename | 选取节点名 |
/ | 从根节点选取 |
// | 选取所有符合条件的节点,而不考虑他们的位置 |
. | 选取当前节点 |
… | 选取当前节点的父节点 |
@ | 选取属性 |
- 谓语用来查找某个特定节点或者包含某个指定的值的节点
- 谓语被嵌入在方括号中
路径表达式 | 结果 |
---|---|
/bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 |
//title[@lang] | 选取所有拥有名为lang的属性的title元素 |
//title[@lang=‘eng’] | 选取所有拥有值为eng的lang属性的title元素 |
路径表达式例举
路径表达式 | 结果 |
---|---|
/bookstore | 选取根元素booksotre |
/bookstore/book | 选取属于bookstore的子元素的所有book元素 |
//book | 选取所有book子元素,而不管他们在文档中的位置 |
/bookstore/book | 选取属于bookstore元素的后代的所有book元素,而不管他们位于bookstore之下的什么位置 |
//@lang | 选取名为lang的所有属性 |
/bookstore/book/text() | 选取属于bookstore的子元素的所有book元素的文本 |
xpath选择器
- Scrapy中xpath选择器
- 基于Ixml库
- 获取选择器的网页数据
- extract()
- 提取selector列表中的网页数据
- 如果列表为空,取下标为0的网页数据会抛出异常
- extract_first()
- 提取selector列表中下标为0的网页数据
- 如果列表为空,不会抛出异常,返回None
- extract()
爬取从页面中提取的URL
使用场景
- 详情页爬取
- 多层级目录爬取
提取URL发起HTTP请求
- 构造request对象
- 指定HTTP请求的URL
- 指定处理这个页面的回调方法
- 关闭去重标记
- 使用yield返回request对象
request与对应的response传递数据
- meta字典
Scrapy的item模块
item的作用
- 定义框架中数据传输的形式
定义item
- 定义Item类并继承scrapy.Item
- 定义变量
- 变量名
- 变量类型
- scrapy.Field()
- 使用item
- 使用字典的方式给item赋值
- item[“变量名”] = 赋值
- 使用字典的方式给item赋值
- 使用yield返回item
这篇关于Python数据爬取【大略总结】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!