scrapy+scrapyd+gerapy?爬蟲調(diào)度框架超詳細(xì)教程
一、scrapy
1.1 概述
Scrapy,Python開發(fā)的一個(gè)快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點(diǎn)并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動(dòng)化測試.
其最初是為了頁面抓取 (更確切來說, 網(wǎng)絡(luò)抓取 )所設(shè)計(jì)的, 后臺(tái)也應(yīng)用在獲取API所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡(luò)爬蟲.
Scrapy吸引人的地方在于它是一個(gè)框架,任何人都可以根據(jù)需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等,最新版本又提供了web2.0爬蟲的支持.
1.2 構(gòu)成
Scrapy框架主要由五大組件組成,它們分別是調(diào)度器(Scheduler)、下載器(Downloader)、爬蟲(Spider)和實(shí)體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我們分別介紹各個(gè)組件的作用。
(1)、調(diào)度器(Scheduler):
調(diào)度器,說白了把它假設(shè)成為一個(gè)URL(抓取網(wǎng)頁的網(wǎng)址或者說是鏈接)的優(yōu)先隊(duì)列,由它來決定下一個(gè)要抓取的網(wǎng)址是 什么,同時(shí)去除重復(fù)的網(wǎng)址(不做無用功)。用戶可以自己的需求定制調(diào)度器。
(2)、下載器(Downloader):
下載器,是所有組件中負(fù)擔(dān)最大的,它用于高速地下載網(wǎng)絡(luò)上的資源。Scrapy的下載器代碼不會(huì)太復(fù)雜,但效率高,主要的原因是Scrapy下載器是建立在twisted這個(gè)高效的異步模型上的(其實(shí)整個(gè)框架都在建立在這個(gè)模型上的)。
(3)、 爬蟲(Spider):
爬蟲,是用戶最關(guān)心的部份。用戶定制自己的爬蟲(通過定制正則表達(dá)式等語法),用于從特定的網(wǎng)頁中提取自己需要的信息,即所謂的實(shí)體(Item)。 用戶也可以從中提取出鏈接,讓Scrapy繼續(xù)抓取下一個(gè)頁面。
(4)、 實(shí)體管道(Item Pipeline):
實(shí)體管道,用于處理爬蟲(spider)提取的實(shí)體。主要的功能是持久化實(shí)體、驗(yàn)證實(shí)體的有效性、清除不需要的信息。
(5)、Scrapy引擎(Scrapy Engine):
Scrapy引擎是整個(gè)框架的核心.它用來控制調(diào)試器、下載器、爬蟲。實(shí)際上,引擎相當(dāng)于計(jì)算機(jī)的CPU,它控制著整個(gè)流程。
1.3 安裝和使用
安裝
pip install scrapy(或pip3 install scrapy)
使用
創(chuàng)建新項(xiàng)目:scrapy startproject 項(xiàng)目名
創(chuàng)建新爬蟲:scrapy genspider 爬蟲名 域名
啟動(dòng)爬蟲: scrapy crawl 爬蟲名
二、scrapyd
2.1 簡介
scrapyd是一個(gè)用于部署和運(yùn)行scrapy爬蟲的程序,它允許你通過JSON API來部署爬蟲項(xiàng)目和控制爬蟲運(yùn)行,scrapyd是一個(gè)守護(hù)進(jìn)程,監(jiān)聽爬蟲的運(yùn)行和請(qǐng)求,然后啟動(dòng)進(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

啟動(dòng)
scrapyd

訪問 ip:6800,出現(xiàn)此頁面則啟動(dòng)成功

三、gerapy
3.1 簡介
Gerapy 是一款分布式爬蟲管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 開發(fā),Gerapy 可以幫助我們:
- 方便地控制爬蟲運(yùn)行
- 直觀地查看爬蟲狀態(tài)
- 實(shí)時(shí)地查看爬取結(jié)果
- 簡單地實(shí)現(xiàn)項(xiàng)目部署
- 統(tǒng)一地實(shí)現(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
報(bào)錯(cuò)sqllite 版本過低

解決辦法:升級(jí)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
啟動(dòng)gerapy
gerapy runserver gerapy runserver 0.0.0.0:9000 # 外部訪問 9000端口啟動(dòng)

由于沒有啟動(dòng)scrapy 這里的主機(jī)未0

啟動(dòng)scrapyd后,配置scrapyd的主機(jī)信息

配置成功后就會(huì)加入到主機(jī)列表里

四、scrapy+scrapyd+gerapy的結(jié)合使用
4.1 創(chuàng)建scrapy項(xiàng)目
進(jìn)到gerapy的項(xiàng)目目錄
cd ~/gerapy/projects/
然后新建一個(gè)scrapy項(xiàng)目
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項(xiàng)目
然后再gerapy頁面上可以看到我們新建的項(xiàng)目,再打包一下




運(yùn)行之前還需修改下scrapy代碼


修改完后再運(yùn)行代碼

4.3 運(yùn)行
運(yùn)行成功,本次的部署就ok了!

五、填坑
5.1 運(yùn)行scrapy爬蟲報(bào)錯(cuò)

解決辦法:修改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 運(yùn)行 scrapy 報(bào)錯(cuò)

解決辦法:降低scrapy版本 pip3 install scrapy==2.5.1
到此這篇關(guān)于scrapy+scrapyd+gerapy 爬蟲調(diào)度框架超詳細(xì)教程的文章就介紹到這了,更多相關(guān)scrapy+scrapyd+gerapy 爬蟲調(diào)度框架內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)批量文件分類保存的示例代碼
當(dāng)我們電腦里面的文本或者或者文件夾太多了,有時(shí)候想找到自己想要的文件,只能通過去搜索文件名,這樣還是很麻煩的。本文將通過Python語言實(shí)現(xiàn)文件批量分類保存,需要的可以參考一下2022-04-04
Python3讀取Excel數(shù)據(jù)存入MySQL的方法
今天小編就為大家分享一篇Python3讀取Excel數(shù)據(jù)存入MySQL的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
PyTorch函數(shù)torch.cat與torch.stac的區(qū)別小結(jié)
Pytorch中常用的兩個(gè)拼接函數(shù)torch.cat() 和 torch.stack(),本文主要介紹了這兩個(gè)函數(shù)的用法加區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09

