python—Scrapy框架

一、Scrapy簡介

Scrapy是用純Python實現一個爲了爬取網站數據、提取結構性數據而編寫的應用框 架,用途非常廣泛。

框架的力量,用戶只需要定製開發幾個模塊就可以輕鬆的實現一個爬蟲,用來抓取網頁

內容以及各種圖片,非常之方便。 Scrapy 使用了 Twisted ['twɪstɪd] (其主要對手是Tornado)異步網絡框架來處理網絡通 訊,可以加快我們的下載速度,不用自己去實現異步框架,並且包含了各種中間件接口,可以靈活的完成各種需求。

二.Scrapy框架圖

在這裏插入圖片描述

Scrapy五大基本構成:

Scrapy框架主要由五大組件組成,它們分別是:
調度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)和實體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。

下面我們分別介紹各個組件的作用。

(1)、調度器(Scheduler):調度器,說白了把它假設成爲一個URL(抓取網頁的網址或者說是鏈接)的優先隊列,由它來決定下一個要抓取的網址是 什麼,同時去除重複的網址(不做無用功)。用戶可以自己的需求定製調度器。

(2)、下載器(Downloader):下載器,是所有組件中負擔最大的,它用於高速地下載網絡上的資源。Scrapy的下載器代碼不會太複雜,但效率高,主 要的原因是Scrapy下載器是建立在twisted這個高效的異步模型上的(其實整個框架都在建立在這個模型上的)。

(3)、 爬蟲(Spider):爬蟲,是用戶最關心的部份。用戶定製自己的爬蟲,用於從特定的網頁中提取自己需要的信息,即所謂的實體(Item)。 用戶也可以從中提取出鏈接,讓Scrapy繼續抓取下一個頁面。

(4)、 實體管道(Item Pipeline):實體管道,用於處理爬蟲提取的實體。主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。

(5)、Scrapy引擎(Scrapy Engine):Scrapy引擎是整個框架的核心.它用來控制調試器、下載器、爬蟲。實際上,引擎相當於計算機的CPU,它控制着整個流程。

三、Scrapy請求發出去的整個流程

Scrapy運行時,請求發出去的整個流程大概如下:

1.首先爬蟲將需要發送請求的url(requests)經引擎交給調度器;

2.排序處理後,經ScrapyEngine,DownloaderMiddlewares(有User_Agent, Proxy代理)交給Downloader;

3.Downloader向互聯網發送請求,並接收下載響應.將響應經ScrapyEngine,可選交給Spiders;

4.Spiders處理response,提取數據並將數據經ScrapyEngine交給ItemPipeline保存;

5.提取url重新經ScrapyEngine交給Scheduler進行下一個循環。直到無Url請求程序停止結束。

四.Scrapy的安裝介紹
pycharm 命令行輸入
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy

安裝成功後開始着手爬取

1.創建項目

scrapy startproject testproject
#  testproject是項目的名稱可以自己命名

2.進入項目:

cd testproject

3.生成spider

scrapy genspider baidu www.baidu.com
 # 生成一個baidu的spider

輸出結果:

Created spider 'baidu' using template 'basic' in module:
  testproject.spiders.baidu

4.爬取命令

scrapy crawl zhihu.py

結果:


> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
> Accept-Language: en
> User-Agent: Scrapy/1.5.1 (+https://scrapy.org)
> Accept-Encoding: gzip,deflate
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Content-Type: text/html
< Date: Thu, 02 Aug 2018 04:36:31 GMT
< Last-Modified: Mon, 23 Jan 2017 13:27:32 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章