scrapy+scrapyd+gerapy?爬蟲調(diào)度框架超詳細(xì)教程
一、scrapy
1.1 概述
Scrapy,Python開發(fā)的一個快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試.
其最初是為了頁面抓取 (更確切來說, 網(wǎng)絡(luò)抓取 )所設(shè)計的, 后臺也應(yīng)用在獲取API所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡(luò)爬蟲.
Scrapy吸引人的地方在于它是一個框架,任何人都可以根據(jù)需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等,最新版本又提供了web2.0爬蟲的支持.
1.2 構(gòu)成
Scrapy框架主要由五大組件組成,它們分別是調(diào)度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)和實體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我們分別介紹各個組件的作用。
(1)、調(diào)度器(Scheduler):
調(diào)度器,說白了把它假設(shè)成為一個URL(抓取網(wǎng)頁的網(wǎng)址或者說是鏈接)的優(yōu)先隊列,由它來決定下一個要抓取的網(wǎng)址是 什么,同時去除重復(fù)的網(wǎng)址(不做無用功)。用戶可以自己的需求定制調(diào)度器。
(2)、下載器(Downloader):
下載器,是所有組件中負(fù)擔(dān)最大的,它用于高速地下載網(wǎng)絡(luò)上的資源。Scrapy的下載器代碼不會太復(fù)雜,但效率高,主要的原因是Scrapy下載器是建立在twisted這個高效的異步模型上的(其實整個框架都在建立在這個模型上的)。
(3)、 爬蟲(Spider):
爬蟲,是用戶最關(guān)心的部份。用戶定制自己的爬蟲(通過定制正則表達(dá)式等語法),用于從特定的網(wǎng)頁中提取自己需要的信息,即所謂的實體(Item)。 用戶也可以從中提取出鏈接,讓Scrapy繼續(xù)抓取下一個頁面。
(4)、 實體管道(Item Pipeline):
實體管道,用于處理爬蟲(spider)提取的實體。主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。
(5)、Scrapy引擎(Scrapy Engine):
Scrapy引擎是整個框架的核心.它用來控制調(diào)試器、下載器、爬蟲。實際上,引擎相當(dāng)于計算機(jī)的CPU,它控制著整個流程。
1.3 安裝和使用
安裝
pip install scrapy(或pip3 install scrapy)
使用
創(chuàng)建新項目:scrapy startproject 項目名
創(chuàng)建新爬蟲:scrapy genspider 爬蟲名 域名
啟動爬蟲: scrapy crawl 爬蟲名
二、scrapyd
2.1 簡介
scrapyd是一個用于部署和運行scrapy爬蟲的程序,它允許你通過JSON API來部署爬蟲項目和控制爬蟲運行,scrapyd是一個守護(hù)進(jìn)程,監(jiān)聽爬蟲的運行和請求,然后啟動進(jìn)程來執(zhí)行它們
2.2 安裝和使用
安裝
pip install scrapyd(或pip3 install scrapyd) pip install scrapyd-client(或pip3 install scrapyd-client)
文件配置
vim /usr/local/python3/lib/python3.7/site-packages/scrapyd/default_scrapyd.conf
啟動
scrapyd
訪問 ip:6800,出現(xiàn)此頁面則啟動成功
三、gerapy
3.1 簡介
Gerapy 是一款分布式爬蟲管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 開發(fā),Gerapy 可以幫助我們:
- 方便地控制爬蟲運行
- 直觀地查看爬蟲狀態(tài)
- 實時地查看爬取結(jié)果
- 簡單地實現(xiàn)項目部署
- 統(tǒng)一地實現(xiàn)主機(jī)管理
- 輕松地編寫爬蟲代碼
3.2 安裝使用
安裝
pip install gerapy(或pip3 install gerapy)
安裝完后先建立軟鏈接
ln -s /usr/local/python3/bin/gerapy /usr/bin/gerapy
初始化
gerapy init
初始化數(shù)據(jù)庫
cd gerapy gerapy migrate
報錯sqllite 版本過低
解決辦法:升級sqllite
下載 wget https://www.sqlite.org/2019/sqlite-autoconf-3300000.tar.gz --no-check-certificate tar -zxvf sqlite-autoconf-3300000.tar.gz
安裝 mkdir /opt/sqlite cd sqlite-autoconf-3300000 ./configure --prefix=/opt/sqlite make && make install
建立軟連接 mv /usr/bin/sqlite3 /usr/bin/sqlite3_old ln -s /opt/sqlite/bin/sqlite3 /usr/bin/sqlite3 echo “/usr/local/lib” > /etc/ld.so.conf.d/sqlite3.conf ldconfig vim ~/.bashrc 添加 export LD_LIBRARY_PATH=“/usr/local/lib” source ~/.bashrc
查看當(dāng)前sqlite3的版本 sqlite3 --version
重新初始化gerapy 數(shù)據(jù)庫
配置賬密
gerapy createsuperuser
啟動gerapy
gerapy runserver gerapy runserver 0.0.0.0:9000 # 外部訪問 9000端口啟動
由于沒有啟動scrapy 這里的主機(jī)未0
啟動scrapyd后,配置scrapyd的主機(jī)信息
配置成功后就會加入到主機(jī)列表里
四、scrapy+scrapyd+gerapy的結(jié)合使用
4.1 創(chuàng)建scrapy項目
進(jìn)到gerapy的項目目錄
cd ~/gerapy/projects/
然后新建一個scrapy項目
scrapy startproject gerapy_test scrapy genspider baidu_test www.baidu.com
修改scrapy.cfg 如下
在使用scrapyd-deploy 上傳到scrapyd,先建立軟連接再上傳
ln -s /usr/local/python3/bin/scrapyd-deploy /usr/bin/scrapyd-deploy scrapyd-deploy app -p gerapy_test
4.2 部署打包scrapy項目
然后再gerapy頁面上可以看到我們新建的項目,再打包一下
運行之前還需修改下scrapy代碼
修改完后再運行代碼
4.3 運行
運行成功,本次的部署就ok了!
五、填坑
5.1 運行scrapy爬蟲報錯
解決辦法:修改lzma源代碼如下
try: from _lzma import * from _lzma import _encode_filter_properties, _decode_filter_properties except ImportError: from backports.lzma import * from backports.lzma import _encode_filter_properties, _decode_filter_properties
5.2 scrapyd 運行 scrapy 報錯
解決辦法:降低scrapy版本 pip3 install scrapy==2.5.1
到此這篇關(guān)于scrapy+scrapyd+gerapy 爬蟲調(diào)度框架超詳細(xì)教程的文章就介紹到這了,更多相關(guān)scrapy+scrapyd+gerapy 爬蟲調(diào)度框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python argparse中的action=store_true用法小結(jié)
這篇文章主要介紹了Python argparse中的action=store_true用法小結(jié),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02python paramiko利用sftp上傳目錄到遠(yuǎn)程的實例
今天小編就為大家分享一篇python paramiko利用sftp上傳目錄到遠(yuǎn)程的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python argparse命令參數(shù)與config配置參數(shù)示例深入詳解
這篇文章主要介紹了Python argparse命令參數(shù)與config配置參數(shù),argparse是Python內(nèi)置的一個用于命令項選項與參數(shù)解析的模塊,通過在程序中定義好我們需要的參數(shù),然后在程序啟動命令行傳遞我們想要改變的參數(shù)2023-03-03Python面向?qū)ο蟮娜筇匦苑庋b、繼承、多態(tài)
這篇文章介紹了Python面向?qū)ο蟮娜筇匦苑庋b、繼承、多態(tài),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07