Scrapy 是一套基于Twisted的异步处理框架,是纯Python实现的爬虫框架,只需要定制开发几个模块就可以轻松实现一个爬虫,用来抓取网页内容。
一 开发环境:
Ubuntu18.04 Scrapy1.5 Python3 Mongodb3.6 Pycharm
pip3 install scrapy
sudo apt-get install mongodb
二 Scrapy结构
- Scrapy Engine:Scrapy引擎
- Schedule:一个队列。用来接收引擎发送的请求,将请求排队,并在引擎需要数据时向引擎发送数据。
- Downloader:下载器。负责下载引擎发送过来的Request请求,并将下载到的数据交还给引擎,并由引擎交给Spider进行解析。
- Spider:爬虫组件。用来分析和提取数据.
- Item Pipeline:管道组件。对数据进行后期处理及过滤。
- Downloader Middlewares:下载中间件。用来封装代理、http头。
- Spider Middlewares:Spider中间件。
三 Scrapy项目实例—抓取豆瓣网电影信息
1.新建项目
#新建项目
scrapy startproject douban
cd douban/spiders
#生成douban_spider.py文件 movie.douban.com是要爬取内容的域名
scrapy genspider douban_spider movie.douban.com
项目目录:
-douban
-spiders
-__init__.py
-douban_spider.py
-__init__.py
-items.py
-middlewares.py
-pipelines.py
-settings.py
-scrapy.cfg
- scrapy.cfg:项目配置文件。定义了项目设置文件路径、部署信息等内容。
- items.py:定义Item数据结构的文件。编写所有的Item数据定义。
- settings.py:项目设置文件。可以定义项目的全局设置,比如USER_AGENT等。
- douban_spider.py:爬虫文件。编写xpath和正则表达式的文件。
- pipelines.py:数据处理文件。对爬取到的数据进行处理保存等。
- middlewares.py:项目中间件文件。
2. 分析目标网站
1.确定要爬取的内容
- 电影名称
- 电影序号
- 电影介绍
- 电影星级
- 评价数
- 电影描述
2.编写items.py文件
在DoubanItem类中定义数据结构
# 序号
serial_number = scrapy.Field()
# 名称
movie_name = scrapy.Field()
# 介绍
introduce = scrapy.Field()
# 星级
star = scrapy.Field()