介绍:
Scrapy一个开源和协作的框架,其最初是为了页面抓取所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据或者通用的网络爬虫。
Scrapy是对twisted框架进一步封装得来的,所以它才也采用了事件驱动机制,并使用异步非阻塞的方式实现了并发。
我们看下Scrapy是如何工作的:
整个框架由7部分组成:SPIDERS:负责封装request对象和解析数据;
ENGINE:活动中枢,负责将不同的数据转发给各自的部分处理;
SCHEDULER:调度员,对各种请求进行调度;
DOWNLOADER:负责从网络上下载数据;
ITEM PIPELINES:对ITEMS进行处理,并对数据进行持久化存储,如果数据不符合要求,那么会重新发送请求;
MIDDLEWARE:对请求响应的中间控制;
安装:
pip3 install scrapy
命令行工具:
全局命令:
startproject #创建项目
genspider #创建爬虫程序
runspider #可以独立运行.py文件
fetch #独立于工程单纯的爬取页面,可以拿到请求头
view #下载完毕会弹出浏览器,查看哪些是ajax请求项目级别命令:
crawl #运行爬虫注意配置中ROBOTSTXT_OBEY = False,你懂的0.0!
check #检查语法错误
list #罗列下到底养了多少条虫子
bench #压力测试(打桩?)
项目结构及各部简介:
project_name/
scrapy.cfg
project_name/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
虫子1.py
虫子2.py
虫子3.py
scrapy.cfg : 用于部署scrapy
items.py : 结构化数据
pipelines : 持久化数据
settings.py : 爬虫相关的配置信息,注意选项要全部大写
,否则无效
spiders : 爬虫目录,爬虫规则写在内部
#"如果要想在PyCharm中运行爬虫" :
from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'baidu'])