一,gerapy框架
Gerapy 是一款分布式爬蟲管理框架,支持 Python 3,基于 Scrapy、Scrapyd、Scrapyd-Client、Scrapy-Redis、Scrapyd-API、Scrapy-Splash、Jinjia2、Django、Vue.js 開發(fā),Gerapy 可以幫助我們:
- 更方便地控制爬蟲運行
- 更直觀地查看爬蟲狀態(tài)
- 更實時地查看爬取結果
- 更簡單地實現(xiàn)項目部署
- 更統(tǒng)一地實現(xiàn)主機管理
- 更輕松地編寫爬蟲代碼(幾乎沒用,感覺比較雞肋)
各個框架的作用:
Scrapy:是一個基于Twisted的異步IO框架,有了這個框架,我們就不需要等待當前URL抓取完畢之后在進行下一個URL的抓取,抓取效率可以提高很多。
Scrapy-redis:雖然Scrapy框架是異步加多線程的,但是我們只能在一臺主機上運行,爬取效率還是有限的,Scrapy-redis庫為我們提供了Scrapy分布式的隊列,調度器,去重等等功能,有了它,我們就可以將多臺主機組合起來,共同完成一個爬取任務,抓取的效率又提高了。
Scrapyd:分布式爬蟲完成之后,接下來就是代碼部署,如果我們有很多主機,那就要逐個登錄服務器進行部署,萬一代碼有所改動..........可以想象,這個過程是多么繁瑣。Scrapyd是專門用來進行分布式部署的工具,它提供HTTP接口來幫助我們部署,啟動,停止,刪除爬蟲程序,利用它我們可以很方便的完成Scrapy爬蟲項目的部署。
Gerapy:是一個基于Scrapyd,Scrapyd API,Django,Vue.js搭建的分布式爬蟲管理框架。簡單點說,就是用上述的Scrapyd工具是在命令行進行操作,而Gerapy將命令行和圖形界面進行了對接,我們只需要點擊按鈕就可完成部署,啟動,停止,刪除的操作。
二,gerapy的安裝
1.gerapy下載
pip install gerapy
gerapy 查看是否安裝成功
成功信息:
Usage:
gerapy init [--folder=<folder>]
gerapy migrate
gerapy createsuperuser
gerapy runserver [<host:port>]
2.初始化gerapy
gerapy init
會在當前目錄下生成一個名字為 gerapy 的文件夾,接著進入該文件夾,可以看到有一個 projects 文件夾
3.初始化數(shù)據(jù)庫
要cd 到gerapy目錄
cd gerapy
gerapy migrate
會在gerapy目錄下生產(chǎn)一個sqlite數(shù)據(jù)庫,同時創(chuàng)建數(shù)據(jù)表

-----------------------整體流程------------------------

4.運行gerapy服務
gerapy runserver
gerapy runserver 0.0.0.0:8000 【如果你是在本地,執(zhí)行 gerapy runserver即可,如果你是在遠程上,你就要改成前面這樣來執(zhí)行】
5.訪問gerapy管理界面
瀏覽器輸入
http://127.0.0.1:8000
三,gerapy使用
1.配置主機
就是配置我們scrapyd 遠程服務.
需要添加 IP、端口,以及名稱,點擊創(chuàng)建即可完成添加,點擊返回即可看到當前添加的 Scrapyd 服務列表
2.啟動scrapyd服務
需要在gerapy目錄下啟動
scrapyd

3.把項目文件放到projects下

4.項目管理

可以點擊上圖中的編輯,在線編輯項目,如果項目沒有問題,可以點擊部署進行打包和部署,在部署之前要打包項目(打包成一個egg文件),可以部署到多臺主機。

部署完畢后,可以回到主機管理頁面進行任務調度。點擊調度即可進入任務管理頁面,可以查看當前主機所有任務的運行狀態(tài):

通過點擊運行,停止按鈕來實現(xiàn)任務的啟動和停止,同時可以展開任務條目查看日志詳情。
下面是抓取的數(shù)據(jù)存入MongoDB數(shù)據(jù)庫:

四,遇見的錯誤
scrapy1.6 對應twisted 18.9.0,否則會報錯,這個是我使用的版本,可下載
twisted18.9.0版本py3.6
最新的twisted下載
python非官方擴展模塊