scrapy+scrapyd+gerapy?爬蟲調(diào)度框架超詳細教程
一、scrapy
1.1 概述
Scrapy,Python開發(fā)的一個快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試.
其最初是為了頁面抓取 (更確切來說, 網(wǎng)絡抓取 )所設計的, 后臺也應用在獲取API所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡爬蟲.
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)度器,說白了把它假設成為一個URL(抓取網(wǎng)頁的網(wǎng)址或者說是鏈接)的優(yōu)先隊列,由它來決定下一個要抓取的網(wǎng)址是 什么,同時去除重復的網(wǎng)址(不做無用功)。用戶可以自己的需求定制調(diào)度器。
(2)、下載器(Downloader):
下載器,是所有組件中負擔最大的,它用于高速地下載網(wǎng)絡上的資源。Scrapy的下載器代碼不會太復雜,但效率高,主要的原因是Scrapy下載器是建立在twisted這個高效的異步模型上的(其實整個框架都在建立在這個模型上的)。
(3)、 爬蟲(Spider):
爬蟲,是用戶最關(guān)心的部份。用戶定制自己的爬蟲(通過定制正則表達式等語法),用于從特定的網(wǎng)頁中提取自己需要的信息,即所謂的實體(Item)。 用戶也可以從中提取出鏈接,讓Scrapy繼續(xù)抓取下一個頁面。
(4)、 實體管道(Item Pipeline):
實體管道,用于處理爬蟲(spider)提取的實體。主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。
(5)、Scrapy引擎(Scrapy Engine):
Scrapy引擎是整個框架的核心.它用來控制調(diào)試器、下載器、爬蟲。實際上,引擎相當于計算機的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是一個守護進程,監(jiā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)主機管理
- 輕松地編寫爬蟲代碼
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
查看當前sqlite3的版本 sqlite3 --version

重新初始化gerapy 數(shù)據(jù)庫

配置賬密
gerapy createsuperuser
啟動gerapy
gerapy runserver gerapy runserver 0.0.0.0:9000 # 外部訪問 9000端口啟動

由于沒有啟動scrapy 這里的主機未0

啟動scrapyd后,配置scrapyd的主機信息

配置成功后就會加入到主機列表里

四、scrapy+scrapyd+gerapy的結(jié)合使用
4.1 創(chuàng)建scrapy項目
進到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)度框架超詳細教程的文章就介紹到這了,更多相關(guān)scrapy+scrapyd+gerapy 爬蟲調(diào)度框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3讀取Excel數(shù)據(jù)存入MySQL的方法
今天小編就為大家分享一篇Python3讀取Excel數(shù)據(jù)存入MySQL的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
PyTorch函數(shù)torch.cat與torch.stac的區(qū)別小結(jié)
Pytorch中常用的兩個拼接函數(shù)torch.cat() 和 torch.stack(),本文主要介紹了這兩個函數(shù)的用法加區(qū)別,具有一定的參考價值,感興趣的可以了解一下2023-09-09

