Python爬虫从入门到精通(七)Scrapy框架

「这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战

前言

在了解了爬虫各种基础知识之后,我们有时需要快速搭建一个个爬虫的程序。有没有这么一个方便的工具或框架能让我们快速搭建起一个个爬虫程序呢?Scrapy呼之欲出。

一、什么是Scrapy

纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架。框架本身把一些重复性的工作给你做好了;你就可以轻轻松松的按照其框架本身写几个简单的模块或者简单的扩展一些模块就可以你个性化的功能;当然带来的问题是首先你要学习了解框架,还有,想突破框架本身的限制,比较困难;

Scrapy是基于Twisted(竞争对手Tornado)异步网络框架,Scrapy的组件及架构图如下:

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。

Downloader Middlewares(下载中间件):可以当作是一个可以自定义扩展下载功能的组件。

扫描二维码关注公众号,回复: 13228244 查看本文章

Spider Middlewares(Spider中间件):可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses; 和从Spider出去的Requests)

二、怎么安装使用Scrapy

下面运行的环境是Ubuntu 17.04

1、 安装

安装Scrapy in Ubuntu:

   sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev

   sudo pip install scrapy

2、 制作一个Scrapy爬虫需要的四个步骤

1)新建项目 (scrapy startproject spiderName)新建一个新的爬虫项目,一个项目可能包含很多个爬虫;

scrapy startproject tencentSpider

查看项目结构:

tarena@tedu:~/Spider/tencentSpider$ tree.:

├── scrapy.cfg

└── tencentSpider

    ├── init.py

    ├── items.py

    ├── middlewares.py

    ├── pipelines.py

    ├── settings.py

    └── spiders

        └── init.py

2 directories, 7 files

    2)明确目标:明确你想要抓取的目标,生产一个具体的爬虫

scrapy genspider tencent 

cd tencentSpider

scrapy genspider tencent hr.tencent.com

tarena@tedu:~/Spider/tencentSpider$ tree

├── scrapy.cfg

├── tecentLog.txt

└── tencentSpider

    ├── init.py

    ├── init.pyc

    ├── items.py

    ├── middlewares.py

    ├── pipelines.py

    ├── settings.py

    ├── settings.pyc

    └── spiders

        ├── init.py

        ├── init.pyc

        └── tecent.py

2 directories, 12 files

下面需要具体取修改代码逻辑,按照我们的需求去实现自己的爬虫逻辑:

修改setttings.py 设置

                            pipelines.py 保存的逻辑

                            tecent.py,   抓取页面信息和继续跳转的逻辑

                            items.py     保存item的映射

    3)制作爬虫 (spiders/spiderName.py):制作爬虫开始爬取网页;

    4)存储内容 (pipelines.py):设计管道存储爬取内容;

5)在Scrapy下启动爬虫:

scrapy crawl tencent

猜你喜欢

转载自juejin.im/post/7032057734174507022