Python爬虫进阶(七):Scrapy初步

目录

前言

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

1 定义

就如同我在前言中所说的,scrapy是一个基于Twisted的纯Python编写的爬虫框架,其最新版本(截止2020.11.10)为2.4.0。

2 特点

-可以快速构建爬虫项目

-相比于直接撰写代码,其结构更为清晰(当然,这几乎是所有框架的优点)

-它是异步的,相比于一般爬虫更加高效

-带有一个十分方便的shell,可以在建立项目之前先明确爬取目标路径

-但是,由于其基于twisted,所以也带有twisted框架的缺点,比如不易发现错误。

3 官方文档

https://docs.scrapy.org/en/2.4/index.html

#4 scrapy项目的工作流程

前方英文警告:

  • 1.spider将request发送给engine
  • 2.engine将request发送给scheduler
  • 3.scheduler生成response并交给engine
  • 4.engine将response通过middleware发送给downloader
  • 5.downloader下载response再通过middleware发送给engine
  • 6.engine将response发送给spider
  • 7.spider将解析出的request和item发送给engine
  • 8.engine将request发送给scheduler,将item发送给pipeline

以上循环。

Scrapy中的术语

1 调度器(Scheduler)

调度器是一个关于目标url的队列,在scrapy中,调度器来决定下一个爬取的url是什么。

2 下载器(Downloader)

下载器顾名思义是用于从目标网页上下载内容的组件。

3 实体管道(Item Pipeline)

实体管道用于处理爬虫在目标url中提取到的目标,它可以验证目标和持久地、有序地保存目标。

4 爬虫(Spider)

爬虫是整个scrapy项目中核心的部分,并且其代码通常要使用者自己设计。scrapy中的爬虫与一般意义上的爬虫相似,用于从连接上提取信息(也就是“实体”)交给实体管道,也可以提取链接交给调度器(事实上,这种行为更像是搜索引擎爬虫了)。

5 引擎(Scrapy Engine)

引擎是整个scrapy项目的核心部分,它负责调度上述的几个部件。

开始一个scrapy项目

1 scrapy依赖

在安装scrapy之前,请确保安装以下几个模块:

-twisted

-pyOpenSSL

-pyWin32

-lxml

安装上述模块和scrapy用python自带的pip就可以了,这里就不再详述。

2 命令行创建项目

环境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常用命令

-scrapy startproject [工程名]:开始一个scrapy工程

-scrapy genspider [爬虫名] [域(也就是域名)]:在工程下建立一个爬虫

-scrapy list:查看当前工程下有多少爬虫

-scrapy crawl [爬虫名]:运行项目下的此爬虫

-scrapy fetch [url]:打印url指向的html到输出流

-scrapy shell:打开shell,用于测试语句

 

你可能感兴趣的:(python,爬虫,开发语言)