- Scrapy Engine 引擎
处理整个系统,是各个模块之间的联系人,各个模块的数据均需要引擎来发送和收回 - Scheduler 调度器
a.接收请求,压入队列
b.引擎再次请求时返回请求 - Downloader 下载器
接收请求request,返回响应response - Spider 爬虫
a.发起起始的请求 start_url
b.定义如何爬取下一个网站 call_back - Item Pipeline 管道
定义数据的后续处理 - Middleware 中间件
a. Downloader Middleware 下载器中间件
处理引擎和下载器之间的请求request和响应response (反反爬)
b. Spider Middleware 爬虫中间件
处理spider的响应输出和请求输入
scrapy开发流程:
1 创建项目
scrapy startproject 项目名称
2 明确要爬取的网站数据,在items.py中建模
3 setting中对项目进行配置,scrapy.cfg远程部署配置
4 创建爬虫,spiders文件夹存放爬虫文件
# 命令行创建
scrapy genspider 爬虫名 爬虫允许的域名
# 手动创建
在spiders文件夹下创建py文件
import scrapy
导入模型(items中该爬虫的数据模型)
爬虫类(类名一般为"爬虫名Spider")必要类属性:
name 爬虫名
allowed_domains 允许爬取的域名
start_urls 起始爬取的url列表
必要方法
def parse(self,response):
写入数据获取和处理方法,以及后续url的操作
5 保存数据 pipeline.py进行爬取数据的存储设置
该类一般有三个方法
def __init___(self): 或者是 open_spider(self)
# 定义初始状态,一般为打开一个文件,或者是链接数据库的必要参数等
f = open("file","w")
def process_item(self,item,spider):
定义数据存储过程
item为在爬虫.py文件中yield返回给引擎的爬取数据
def close_spider(spider):
定义数据存储完毕的状态,一般为关闭文件或者是断开数据库服务器链接
6 运行爬虫
scrapy crawl 爬虫名
7 feed输出
将获取到的数据返回给引擎,并Feed输出,给其他平台进行数据分析
scrapy crawl 爬虫名 -o 文件名.json
scrapy crawl 爬虫名 -o 文件名.xml 等等
如果不记得什么格式,只需要随便写点后缀,会提示都有什么格式
scrapy crawl 爬虫名 -o 文件名.xmladfsa