原文連接:https://www.fkomm.cn/article/...html
此次介紹一個及其強大的爬蟲框架---Scrapy,Scrapy由 Python 編寫,是一個快速、高層次的屏幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的數據。Scrapy用途普遍,能夠用於數據挖掘、監測和自動化測試。
不管是在windows仍是mac以及linux下,均可以是用pip工具進行快速安裝:python
$ pip install scrapy
linux
這裏推薦一個很是好用的Python調試shell:ipython。web
ipython是一個python的交互式shell,比默認的python shell好用得多,支持變量自動補全,自動縮進,支持bash shell命令,內置了許多頗有用的功能和函數。學習ipython將會讓咱們以一種更高的效率來使用python。同時它也是利用Python進行科學計算和交互可視化的一個最佳的平臺。shell
咱們依舊用pip工具進行安裝:數據庫
$ pip install ipython
windows
首先,咱們得明白一點,Scrapy不是一個功能函數庫,而是是用純Python實現一個爲了爬取網站數據、提取結構性數據而編寫的應用框架。簡單的說,他是一個半成品,能夠幫助用戶簡單快速的部署一個專業的網絡爬蟲。若是說前面咱們寫的定製bs4爬蟲是「手動擋」,那Scrapy就至關於「半自動檔」的車。bash
其次,Scrapy 使用了 Twisted(其主要對手是Tornado)異步網絡框架來處理網絡通信,能夠加快咱們的下載速度,不用本身去實現異步框架,而且包含了各類中間件接口,能夠靈活的完成各類需求。網絡
框架的力量,用戶只須要定製開發幾個模塊就能夠輕鬆的實現一個爬蟲,用來抓取網頁內容以及各類圖片,很是之方便。多線程
首先來一張框架總體的圖:
從圖中咱們能夠清楚的看到,整個框架一共分爲五個部分:
這五個部分互相協做,共同完成了整個爬蟲項目的工做。下面咱們來一個一個介紹。
Spiders這個模塊就是整個爬蟲項目中須要咱們手動實現的核心部分,就是相似咱們以前寫的get_content函數部分,最主要的功能是 解析網頁內容、產生爬取項、產生額外的爬去請求。
這個模塊也是須要咱們手動實現的,他的主要功能是將咱們爬取篩選完畢的數據寫入文本,數據庫等等。總之就是一個「本地化」的過程。
這個模塊,是Scrapy幫咱們作好的,不須要咱們本身編寫,直接拿來用就行,其主要功能就是從網上獲取網頁內容,相似於咱們寫的get_html函數,固然,比咱們本身寫的這個簡單的函數要強大不少
這個模塊對全部的爬取請求,進行調度管理,一樣也是不須要咱們寫的模塊。經過簡單的配置就能達到更加多線程,併發處理等等強大功能。
這個模塊至關於整個框架的控制中心,他控制着全部模塊的數據流交換,並根據不一樣的條件出發相對應的事件,一樣,這個模塊也是不須要咱們編寫的。
Scrapy框架的數據流動:
先上一張圖:
說了各個模塊的做用,那麼整個項目跑起來的時候,數據究竟是怎麼運做的呢? 上圖的數字表明數據的流向,解釋以下:
Scrapy是一個很強大的爬蟲框架,用起來很方便,可是要定製高級的功能就不是那麼簡單的了。這裏只是簡單的介紹了一下框架的基本原理,但具體如何使用不是一時半會可以說完的,後面我會在例子中一一展示這個框架的高級功能。
若是你想要更加系統化的學習理解這個框架,能夠看看Scrapy的官方文檔:[Scrapy 1.5文檔]
(https://doc.scrapy.org/en/lat...,會讓你受益不淺的!!!!
圓方圓學院聚集 Python + AI 名師,打造精品的 Python + AI 技術課程。 在各大平臺都長期有優質免費公開課,歡迎報名收看。
公開課地址:https://ke.qq.com/course/362788