scrapy框架的使用

安装
 1 # Ubuntu安装
 2 1、安装依赖包
 3   1、sudo apt-get install libffi-dev
 4   2、sudo apt-get install libssl-dev
 5   3、sudo apt-get install libxml2-dev
 6   4、sudo apt-get install python3-dev
 7   5、sudo apt-get install libxslt1-dev
 8   6、sudo apt-get install zlib1g-dev
 9   7、sudo pip3 install -I -U service_identity
10 2、安装scrapy框架
11   1、sudo pip3 install Scrapy
1 # Windows安装
2 cmd命令行(管理员): python -m pip install Scrapy
3 # Error: Microsoft Visual C++ 14.0 is required xxx

Scrapy框架五大组件


1 1、引擎(Engine)      :整个框架核心
2 2、调度器(Scheduler) :维护请求队列
3 3、下载器(Downloader):获取响应对象
4 4、爬虫文件(Spider)  :数据解析提取
5 5、项目管道(Pipeline):数据入库处理
6 **********************************
7 # 下载器中间件(Downloader Middlewares) : 引擎->下载器,包装请求(随机代理等)
8 # 蜘蛛中间件(Spider Middlewares) : 引擎->爬虫文件,可修改响应对象属性

scrapy爬虫工作流程

1 # 爬虫项目启动
2 1、由引擎向爬虫程序索要第一个要爬取的URL,交给调度器去入队列
3 2、调度器处理请求后出队列,通过下载器中间件交给下载器去下载
4 3、下载器得到响应对象后,通过蜘蛛中间件交给爬虫程序
5 4、爬虫程序进行数据提取:
6    1、数据交给管道文件去入库处理
7    2、对于需要继续跟进的URL,再次交给调度器入队列,依次循环

scrapy常用命令

1 # 1、创建爬虫项目
2 scrapy startproject 项目名
3 # 2、创建爬虫文件
4 scrapy genspider 爬虫名 域名
5 # 3、运行爬虫
6 scrapy crawl 爬虫名

scrapy项目目录结构

1 Baidu                   # 项目文件夹
2 ├── Baidu               # 项目目录
3 │   ├── items.py        # 定义数据结构
4 │   ├── middlewares.py  # 中间件
5 │   ├── pipelines.py    # 数据处理
6 │   ├── settings.py     # 全局配置
7 │   └── spiders
8 │       ├── baidu.py    # 爬虫文件
9 └── scrapy.cfg          # 项目基本配置文件

全局配置文件settings.py详解

 1 # 1、定义User-Agent
 2 USER_AGENT = 'Mozilla/5.0'
 3 # 2、是否遵循robots协议,一般设置为False
 4 ROBOTSTXT_OBEY = False
 5 # 3、最大并发量,默认为16
 6 CONCURRENT_REQUESTS = 32
 7 # 4、下载延迟时间
 8 DOWNLOAD_DELAY = 1
 9 # 5、请求头,此处也可以添加User-Agent
10 DEFAULT_REQUEST_HEADERS={}
11 # 6、项目管道
12 ITEM_PIPELINES={
13   '项目目录名.pipelines.类名':300
14 }

创建爬虫项目步骤

1 1、新建项目 :scrapy startproject 项目名
2 2、cd 项目文件夹
3 3、新建爬虫文件 :scrapy genspider 文件名 域名
4 4、明确目标(items.py)
5 5、写爬虫程序(文件名.py)
6 6、管道文件(pipelines.py)
7 7、全局配置(settings.py)
8 8、运行爬虫 :scrapy crawl 爬虫名

pycharm运行爬虫项目

1 1、创建begin.py(和scrapy.cfg文件同目录)
2 2、begin.py中内容:
3   from scrapy import cmdline
4   cmdline.execute('scrapy crawl maoyan'.split())

 

posted @ 2019-10-22 17:13  lattesea  阅读(194)  评论(0编辑  收藏  举报