目录
前言
Scrapy
1 定义
2 特点
3 官方文档
#4 scrapy项目的工作流程
Scrapy中的术语
1 调度器(Scheduler)
2 下载器(Downloader)
3 实体管道(Item Pipeline)
4 爬虫(Spider)
5 引擎(Scrapy Engine)
开始一个scrapy项目
1 scrapy依赖
2 命令行创建项目
Scrapy常用命令
感觉很多人都是先从scrapy学起,但我还是认为在学框架之前最好打打基础。况且初学者哪来的这么多大项目,小项目和demo用scrapy也不嫌累赘吗?当然,这都是各人选择,也没什么好嘴的。
就如同我在前言中所说的,scrapy是一个基于Twisted的纯Python编写的爬虫框架,其最新版本(截止2020.11.10)为2.4.0。
-可以快速构建爬虫项目
-相比于直接撰写代码,其结构更为清晰(当然,这几乎是所有框架的优点)
-它是异步的,相比于一般爬虫更加高效
-带有一个十分方便的shell,可以在建立项目之前先明确爬取目标路径
-但是,由于其基于twisted,所以也带有twisted框架的缺点,比如不易发现错误。
https://docs.scrapy.org/en/2.4/index.html
前方英文警告:
以上循环。
调度器是一个关于目标url的队列,在scrapy中,调度器来决定下一个爬取的url是什么。
下载器顾名思义是用于从目标网页上下载内容的组件。
实体管道用于处理爬虫在目标url中提取到的目标,它可以验证目标和持久地、有序地保存目标。
爬虫是整个scrapy项目中核心的部分,并且其代码通常要使用者自己设计。scrapy中的爬虫与一般意义上的爬虫相似,用于从连接上提取信息(也就是“实体”)交给实体管道,也可以提取链接交给调度器(事实上,这种行为更像是搜索引擎爬虫了)。
引擎是整个scrapy项目的核心部分,它负责调度上述的几个部件。
在安装scrapy之前,请确保安装以下几个模块:
-twisted
-pyOpenSSL
-pyWin32
-lxml
安装上述模块和scrapy用python自带的pip就可以了,这里就不再详述。
环境Python3.6.6/scrapy2.4.0
启动命令提示符用cd命令跳转到你选定的工程文件夹,或者直接在文件夹下Shift右键选择“在此处打开PowerShell”。
输入”scrapy startproject [你的工程名]”,如果创建成功,会返回以下字符:
New Scrapy project '[你的工程名]', using template directory '……', created in:
……\[你的工程名]
You can start your first spider with:
cd [你的工程名]
scrapy genspider example example.com
我的scrapy项目名为start01。
cd到项目主文件夹下(cd [你的工程名]),输入“scrapy genspider [你的爬虫名] [爬虫爬取的域]”,创建一个爬虫。作为范例我打算爬取微博,所以我输入scrapy start genspider weibo weibo.com。如果创建成功,会返回以下字符:
Created spider 'weibo' using template 'basic' in module:
{spiders_module.__name__}.{module}
现在,我们的目录树如下:
start01
│ scrapy.cfg
│
└─start01
│ items.py
│ middlewares.py
│ pipelines.py
│ settings.py
│ __init__.py
│
├─spiders
│ │ weibo.py
│ │ __init__.py
│ │
│ └─__pycache__
│ __init__.cpython-36.pyc
│
└─__pycache__
settings.cpython-36.pyc
__init__.cpython-36.pyc
-scrapy startproject [工程名]:开始一个scrapy工程
-scrapy genspider [爬虫名] [域(也就是域名)]:在工程下建立一个爬虫
-scrapy list:查看当前工程下有多少爬虫
-scrapy crawl [爬虫名]:运行项目下的此爬虫
-scrapy fetch [url]:打印url指向的html到输出流
-scrapy shell:打开shell,用于测试语句