网络爬虫:Scrapy爬虫框架

Scrapy爬虫框架

Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, School of Artificial and Intelligence, Huazhong University of Science and Technology

网络爬虫专栏链接



本教程主要参考中国大学慕课的 Python 网络爬虫与信息提取,为个人学习笔记。

在学习过程中遇到了一些问题,都手动记录并且修改更正,保证所有的代码为有效。且结合其他的博客总结了一些常见问题的解决方式。

本教程不商用,仅为学习参考使用。如需转载,请联系本人。

Reference

爬虫 MOOC

数据分析 MOOC

廖雪峰老师的 Python 教程

Scrapy爬虫框架介绍

Scrapy 是一个快速功能强大的网络爬虫框架

在这里插入图片描述

Win 平台: “以管理员身份运行” cmd ,执行

pip3 install scrapy
pip3 --time-out=2000 install scrapy

安装后小测:执行 scrapy ‐h

在这里插入图片描述

Scrapy 不是一个函数功能库,而是一个爬虫框架。

爬虫框架是实现爬虫功能的一个软件结构和功能组件集合,它是一个半成品,能够帮助用户实现专业网络爬虫。

Scrapy爬虫框架流程

在这里插入图片描述

结构,分布式,“5+2”结构

数据流的三个路径:

1 Engine 从 Spider 处获得爬取请求(Request)

2 Engine 将爬取请求转发给 Scheduler,用于调度

3 Engine 从 Scheduler 处获得下一个要爬取的请求

4 Engine 将爬取请求通过中间件发送给 Downloader

5 爬取网页后,Downloader 形成响应(Response)通过中间件发给 Engine

6 Engine 将收到的响应通过中间件发送给 Spider 处理

7 Spider 处理响应后产生爬取项(scraped Item)和新的爬取请求(Requests)给 Engine

8 Engine 将爬取项发送给 Item Pipeline(框架出口)

9 Engine 将爬取请求发送给 Scheduler

数据流的出入口:

Engine 控制各模块数据流,不间断从 Scheduler 处获得爬取请求,直至请求为空

框架入口:Spider 的初始爬取请求

框架出口:Item Pipeline

在这里插入图片描述

Engine

(1) 控制所有模块之间的数据流

(2) 根据条件触发事件

不需要用户修改

Downloader

根据请求下载网页,不需要用户修改

Scheduler

对所有爬取请求进行调度管理,不需要用户修改

Downloader Middleware

目的:实施 Engine、Scheduler 和 Downloader 之间进行用户可配置的控制

功能:修改、丢弃、新增请求或响应

用户可以编写配置代码

Spider

(1) 解析 Downloader 返回的响应(Response)

(2) 产生爬取项(scraped item)

(3) 产生额外的爬取请求(Request)

需要用户编写配置代码

Item Pipelines

(1) 以流水线方式处理 Spider 产生的爬取项

(2) 由一组操作顺序组成,类似流水线,每个操作是一个 Item Pipeline 类型

(3) 可能操作包括:清理、检验和查重爬取项中的 HTML 数据、将数据存储到数据库

需要用户编写配置代码

Spider Middleware

目的:对请求和爬取项的再处理

功能:修改、丢弃、新增请求或爬取项

用户可以编写配置代码


“5+2” 结构

Requests库和Scrapy爬虫框架对比

相同点:

两者都可以进行页面请求和爬取,Python 爬虫的两个重要技术路线

两者可用性都好,文档丰富,入门简单

两者都没有处理 js、提交表单、应对验证码等功能(可扩展)

不同点:

页面级爬虫 网站级爬虫
功能库 框架
并发性考虑不足,性能较差
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值