首先说一下scrapy框架的架构
- Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
- Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
- Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
- Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
- Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
- Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。
- Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests
首先要先创建一个爬虫项目
scrapy startproject 爬虫项目名称
2018-12-03 19-24-25屏幕截图.png
将创建的scrapy项目用pycharm打开,如下图:
2018-12-03 19-26-50屏幕截图.png
pycharm左下角打开 Terminal,创建爬虫文件:scrapy genspider 爬虫文件名称 域名
创建成功后,出现爬虫文件
接下来就在爬虫文件中写爬虫代码
- items.py :自己预计爬取的内容
- middlewares.py :自定义中间件的文件
- pipelines.py :管道,保存数据
- settings :设置文件
- spider :自己定义的文件夹
- scrapy.cfg :项目的配置文件
爬虫文件里填写你爬取开始的页面url:
2018-12-03 19-45-49屏幕截图.png
请求导航条上的每个按钮对应的页面
分别解析每个页面的列表
请求详情url,解析详细信息
2018-12-03 19-48-25屏幕截图.png
设置item /与存储有关
2018-12-03 19-51-13屏幕截图.png
然后配置settings ,将需要的代码解注释
2018-12-03 19-53-14屏幕截图.png
在 settings.py 文件中找到 ROBOTSTXT_OBEY , 把其值设为 False。让我们的爬虫不去读取网站的 ROBOTS 协议。
2018-12-03 19-58-46屏幕截图.png
最后,在Terminal中输入运行命令: scrapy+crawl+爬虫名称