前言
今天講述Python框架源碼專題最后一個部分,爬蟲集群部署,前面更新了十五個從零開始學(xué)python的系列文章,分別是:
1.編程語法必修篇
2.網(wǎng)絡(luò)編程篇
3.多線程/多進(jìn)程/協(xié)程篇
4.MySQL數(shù)據(jù)庫篇
5.Redis數(shù)據(jù)庫篇
6.MongoDB數(shù)據(jù)庫篇
7.機(jī)器學(xué)習(xí)篇
8.全棧開發(fā)篇
9.Numpy/pandas/matplotlib篇
10.Hadoop篇
11.Spark篇
12.爬蟲工程師篇
13.爬蟲工程師自動化和抓包篇
14.scrapy框架篇
15.feapder框架篇
本系列文根據(jù)以下學(xué)習(xí)路線展開講述:
從零開始學(xué)python到高級進(jìn)階路線圖主頁
適用于零基礎(chǔ)學(xué)習(xí)和進(jìn)階人群的python資源:
① 騰訊認(rèn)證python完整項目實戰(zhàn)教程筆記PDF
② 十幾個大廠python面試專題PDF
③ python全套視頻教程(零基礎(chǔ)-高級進(jìn)階JS逆向)
④ 百個項目實戰(zhàn)+源碼+筆記
⑤ 編程語法-機(jī)器學(xué)習(xí)-全棧開發(fā)-數(shù)據(jù)分析-爬蟲-APP逆向等全套項目+文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-637934.html
三丶爬蟲集群部署
一丶scrapyd框架
1.環(huán)境部署
Scrapyd是一個基于Twisted的Python框架,用于部署和運(yùn)行Scrapy爬蟲。它提供了一個Web服務(wù),可以通過API來管理Scrapy爬蟲的部署和運(yùn)行。在Scrapyd中,爬蟲可以被打包成一個egg文件,然后通過API上傳到Scrapyd服務(wù)器上進(jìn)行部署和運(yùn)行。
以下是Scrapyd框架環(huán)境部署的詳細(xì)步驟:
安裝Python和pip
Scrapyd是基于Python的框架,因此需要先安裝Python和pip??梢詮腜ython官網(wǎng)下載Python安裝包,然后使用命令行安裝pip。
安裝Scrapy和Scrapyd
使用pip安裝Scrapy和Scrapyd:
pip install scrapy
pip install scrapyd
配置Scrapyd
Scrapyd的配置文件位于/etc/scrapyd/scrapyd.conf??梢允褂靡韵旅顏砭庉嬇渲梦募?/p>
sudo nano /etc/scrapyd/scrapyd.conf
在配置文件中,可以設(shè)置Scrapyd的端口號、日志文件路徑、爬蟲項目路徑等。
啟動Scrapyd
使用以下命令啟動Scrapyd:
scrapyd
Scrapyd將會在默認(rèn)端口6800上啟動??梢栽跒g覽器中訪問http://localhost:6800/來查看Scrapyd的Web界面。
部署Scrapy爬蟲
將Scrapy爬蟲打包成一個egg文件,然后使用以下命令將其部署到Scrapyd服務(wù)器上:
curl -F project=myproject -F spider=myspider \
-F eggfile=@myproject.egg \
http://localhost:6800/schedule.json -o result.json
其中,project和spider參數(shù)分別指定爬蟲所在的項目和爬蟲名稱,eggfile參數(shù)指定要上傳的egg文件路徑,最后的URL是Scrapyd的API地址。
查看爬蟲運(yùn)行狀態(tài)
可以在Scrapyd的Web界面上查看爬蟲的運(yùn)行狀態(tài)。也可以使用以下命令來查看爬蟲的運(yùn)行日志:
curl http://localhost:6800/logs/myproject/myspider/001
其中,myproject和myspider分別是爬蟲所在的項目和爬蟲名稱,001是爬蟲運(yùn)行的任務(wù)ID。
以上就是Scrapyd框架環(huán)境部署的詳細(xì)步驟。
2.scrapyd API處理爬蟲
Scrapyd是一個用于部署和運(yùn)行Scrapy爬蟲的Python框架,它提供了一個基于HTTP的API,可以通過API管理和控制爬蟲的運(yùn)行。通過Scrapyd API,你可以與Scrapyd服務(wù)器進(jìn)行通信,發(fā)送指令來管理爬蟲的啟動、停止、查看爬蟲狀態(tài)等操作。
下面是對Scrapyd API處理爬蟲的詳細(xì)解釋:
安裝Scrapyd:
首先,需要安裝Scrapyd框架??梢允褂胮ip命令進(jìn)行安裝:pip install scrapyd
啟動Scrapyd服務(wù)器:
使用命令scrapyd啟動Scrapyd服務(wù)器。默認(rèn)情況下,Scrapyd服務(wù)器將在6800端口上運(yùn)行。
創(chuàng)建Scrapy爬蟲:
在使用Scrapyd API之前,需要先創(chuàng)建一個Scrapy爬蟲。可以使用Scrapy命令行工具創(chuàng)建一個新的爬蟲項目,并編寫爬蟲代碼。
部署爬蟲:
在項目根目錄下運(yùn)行命令scrapyd-deploy,將爬蟲部署到Scrapyd服務(wù)器上。這將會生成一個scrapy.cfg配置文件,并將項目上傳到Scrapyd服務(wù)器。
使用Scrapyd API:
Scrapyd API提供了一系列接口用于管理爬蟲,包括啟動爬蟲、停止爬蟲、獲取爬蟲狀態(tài)等。
-
啟動爬蟲:使用/schedule.json接口來啟動一個爬蟲。需要提供爬蟲名稱和可選的參數(shù)。例如:http://localhost:6800/schedule.json -d project=myproject -d spider=myspider
-
停止爬蟲:使用/cancel.json接口可以停止正在運(yùn)行的爬蟲。需要提供爬蟲任務(wù)的ID。例如:http://localhost:6800/cancel.json -d project=myproject -d job=12345
-
查看爬蟲狀態(tài):使用/listjobs.json接口可以獲取當(dāng)前運(yùn)行中的爬蟲任務(wù)列表及其狀態(tài)。例如:http://localhost:6800/listjobs.json?project=myproject
解析API響應(yīng):
Scrapyd API的響應(yīng)是JSON格式的數(shù)據(jù)??梢允褂肞ython的requests庫或其他HTTP請求庫來發(fā)送API請求,并解析返回的JSON數(shù)據(jù)。
通過Scrapyd API,你可以通過程序化的方式管理和控制Scrapy爬蟲的運(yùn)行。這使得你可以方便地遠(yuǎn)程啟動和監(jiān)控爬蟲任務(wù)。
3.scrapyd多任務(wù)管理
在Scrapyd中,多任務(wù)管理是指同時運(yùn)行和管理多個Scrapy爬蟲任務(wù)的能力。Scrapyd提供了一組API和工具,可以輕松地管理多個爬蟲任務(wù),包括啟動、停止、監(jiān)視任務(wù)狀態(tài)以及獲取任務(wù)結(jié)果等。下面是對Scrapyd多任務(wù)管理的詳細(xì)解釋:
創(chuàng)建多個爬蟲項目:
首先,你需要創(chuàng)建多個獨(dú)立的Scrapy爬蟲項目。每個項目都在獨(dú)立的目錄中,并具有自己的爬蟲代碼、配置文件和依賴項。
部署爬蟲項目:
使用Scrapyd的部署工具(如scrapyd-deploy命令)將各個爬蟲項目部署到Scrapyd服務(wù)器上。確保你為每個項目指定唯一的項目名稱。
啟動多個任務(wù):
使用Scrapyd API的/schedule.json接口來啟動多個任務(wù)。你可以通過發(fā)送多個HTTP請求,每個請求對應(yīng)一個任務(wù),來實現(xiàn)同時啟動多個任務(wù)。在每個請求中,指定項目名稱和要啟動的爬蟲名稱。
監(jiān)視任務(wù)狀態(tài):
使用Scrapyd API的/listjobs.json接口來獲取當(dāng)前運(yùn)行中的任務(wù)列表及其狀態(tài)。你可以周期性地發(fā)送API請求以獲取最新的任務(wù)狀態(tài)信息。根據(jù)任務(wù)狀態(tài),可以判斷任務(wù)是正在運(yùn)行、已完成還是出現(xiàn)錯誤。
獲取任務(wù)結(jié)果:
當(dāng)任務(wù)完成后,可以使用Scrapyd API的/listjobs.json接口或/jobq/{job_id}/items.json接口來獲取任務(wù)的結(jié)果數(shù)據(jù)。這些接口將返回爬蟲任務(wù)的輸出數(shù)據(jù),如爬取的數(shù)據(jù)項或日志信息。
停止任務(wù):
如果需要停止正在運(yùn)行的任務(wù),可以使用Scrapyd API的/cancel.json接口。提供項目名稱和任務(wù)ID,即可停止相應(yīng)的任務(wù)。
通過Scrapyd的多任務(wù)管理能力,你可以同時運(yùn)行和管理多個獨(dú)立的爬蟲任務(wù)。這使得你可以處理大規(guī)模的爬取任務(wù),提高效率并降低管理成本。
二丶gerapy部署爬蟲
1.gerapy環(huán)境搭建
Gerapy是一個基于Scrapy的分布式爬蟲管理框架,可以方便地管理多個Scrapy爬蟲,并提供了Web界面進(jìn)行可視化操作。下面是Gerapy環(huán)境搭建的詳細(xì)講解:
安裝Python
Gerapy是基于Python開發(fā)的,因此需要先安裝Python??梢詮墓倬W(wǎng)下載Python安裝包,也可以使用包管理工具進(jìn)行安裝。
安裝Scrapy
Gerapy是基于Scrapy的,因此需要先安裝Scrapy。可以使用pip進(jìn)行安裝:
pip install scrapy
安裝Gerapy
可以使用pip進(jìn)行安裝:
pip install gerapy
安裝Redis
Gerapy使用Redis作為分布式任務(wù)隊列和數(shù)據(jù)存儲,因此需要先安裝Redis??梢詮墓倬W(wǎng)下載Redis安裝包,也可以使用包管理工具進(jìn)行安裝。
配置Gerapy
Gerapy的配置文件位于~/.gerapy/config.json,可以使用以下命令進(jìn)行初始化:
gerapy init
然后編輯~/.gerapy/config.json文件,配置Redis和Gerapy的用戶名和密碼等信息。
啟動Gerapy
可以使用以下命令啟動Gerapy:
gerapy
然后在瀏覽器中訪問http://localhost:8000,輸入用戶名和密碼登錄Gerapy的Web界面。
創(chuàng)建Scrapy項目
在Gerapy的Web界面中,可以創(chuàng)建Scrapy項目,并在項目中創(chuàng)建爬蟲。Gerapy會自動將爬蟲添加到任務(wù)隊列中,可以在Web界面中查看任務(wù)狀態(tài)和日志。
2.gerapy服務(wù)器部署
安裝Python和Scrapy
在服務(wù)器上安裝Python和Scrapy,可以使用以下命令:
sudo apt-get update
sudo apt-get install python3 python3-pip
sudo pip3 install scrapy
安裝Gerapy
使用以下命令安裝Gerapy:
sudo pip3 install gerapy
初始化Gerapy
使用以下命令初始化Gerapy:
gerapy init
這將創(chuàng)建一個名為gerapy的文件夾,其中包含Gerapy的配置文件和其他必要文件。
配置Gerapy
在gerapy文件夾中,打開config.py文件,配置Gerapy的相關(guān)參數(shù),例如數(shù)據(jù)庫連接信息、管理員賬號等。
啟動Gerapy
使用以下命令啟動Gerapy:
gerapy runserver
這將啟動Gerapy的Web界面,可以在瀏覽器中訪問http://localhost:8000來管理爬蟲。
部署爬蟲
在Gerapy的Web界面中,可以添加、編輯和刪除爬蟲,并且可以在多臺服務(wù)器上部署爬蟲,實現(xiàn)分布式爬取。
3.gerapy打包框架項目
Gerapy是一個基于Scrapy的分布式爬蟲管理框架,可以方便地管理多個Scrapy爬蟲,并提供了Web界面進(jìn)行操作和監(jiān)控。在實際項目中,我們可能需要將Gerapy打包成可執(zhí)行文件,以便在其他機(jī)器上部署和運(yùn)行。本文將介紹如何打包Gerapy框架項目。
安裝pyinstaller
pyinstaller是一個用于將Python代碼打包成可執(zhí)行文件的工具,可以通過pip進(jìn)行安裝:
pip install pyinstaller
打包Gerapy
在Gerapy項目根目錄下執(zhí)行以下命令:
pyinstaller -F gerapy.spec
其中,gerapy.spec是一個配置文件,用于指定打包的參數(shù)和選項。如果沒有該文件,可以通過以下命令生成:
pyinstaller --name=gerapy -y --clean --windowed --icon=gerapy.ico --add-data=gerapy.ico;. gerapy/__main__.py
該命令將生成一個名為gerapy的可執(zhí)行文件,使用了以下參數(shù)和選項:
- –name:指定生成的可執(zhí)行文件名為gerapy;
- -y:自動覆蓋已存在的輸出目錄;
- –clean:在打包前清理輸出目錄;
- –windowed:生成窗口應(yīng)用程序,不顯示命令行窗口;
- –icon:指定應(yīng)用程序圖標(biāo);
- –add-data:將gerapy.ico文件打包到可執(zhí)行文件中。
運(yùn)行Gerapy
打包完成后,在dist目錄下會生成一個名為gerapy的可執(zhí)行文件。將該文件復(fù)制到其他機(jī)器上,即可在該機(jī)器上運(yùn)行Gerapy框架項目。
三丶feapder部署
1.feapder應(yīng)用場景和原理
Feapder是一個基于Python開發(fā)的輕量級分布式爬蟲框架,旨在提供簡單、易用且高效的爬蟲解決方案。它具有以下應(yīng)用場景和原理:
應(yīng)用場景:
-
數(shù)據(jù)采集:Feapder可以用于從各種網(wǎng)站和數(shù)據(jù)源中采集數(shù)據(jù)。無論是爬取結(jié)構(gòu)化數(shù)據(jù)還是非結(jié)構(gòu)化數(shù)據(jù),F(xiàn)eapder都提供了豐富的功能和靈活的配置選項來滿足不同數(shù)據(jù)采集的需求。
-
網(wǎng)站監(jiān)測:Feapder可以周期性地監(jiān)測網(wǎng)站內(nèi)容的變化,并及時提醒用戶。這在需要實時監(jiān)控目標(biāo)網(wǎng)站的情況下非常有用,比如新聞更新、價格變動等。
-
數(shù)據(jù)清洗和處理:Feapder支持自定義處理函數(shù)和管道來對爬取的數(shù)據(jù)進(jìn)行清洗和處理。你可以使用Feapder提供的數(shù)據(jù)處理功能,比如去重、編碼轉(zhuǎn)換、數(shù)據(jù)過濾等,將爬取的原始數(shù)據(jù)轉(zhuǎn)化為可用的結(jié)構(gòu)化數(shù)據(jù)。
-
數(shù)據(jù)存儲和導(dǎo)出:Feapder提供了多種數(shù)據(jù)存儲選項,包括數(shù)據(jù)庫存儲、文件存儲和消息隊列等。你可以根據(jù)需求選擇適合的存儲方式,并支持?jǐn)?shù)據(jù)導(dǎo)出到各種格式,如CSV、JSON等。
原理解析:
Feapder的核心原理是基于分布式的異步任務(wù)調(diào)度和處理。以下是Feapder的原理解析:
-
分布式架構(gòu):Feapder使用分布式架構(gòu)來提高爬取效率和可擴(kuò)展性。任務(wù)調(diào)度和數(shù)據(jù)處理分布在多個節(jié)點(diǎn)上,每個節(jié)點(diǎn)可以獨(dú)立運(yùn)行爬蟲任務(wù),并通過消息隊列進(jìn)行通信和數(shù)據(jù)傳輸。
-
異步任務(wù)調(diào)度:Feapder使用異步任務(wù)調(diào)度框架(比如Celery)來實現(xiàn)任務(wù)的并發(fā)執(zhí)行。每個爬蟲任務(wù)都被封裝為一個可執(zhí)行的異步任務(wù),可以獨(dú)立運(yùn)行在任務(wù)調(diào)度器中,并通過消息隊列接收和發(fā)送任務(wù)相關(guān)的消息。
-
任務(wù)調(diào)度和監(jiān)控:Feapder提供了任務(wù)調(diào)度和監(jiān)控的功能,可以實時監(jiān)控任務(wù)的狀態(tài)、進(jìn)度和錯誤信息。你可以通過Feapder的管理界面或API,對任務(wù)進(jìn)行啟動、停止、暫停和重新調(diào)度等操作,以及實時查看任務(wù)的日志和統(tǒng)計信息。
-
數(shù)據(jù)處理和存儲:Feapder支持自定義的數(shù)據(jù)處理函數(shù)和處理管道,可以對爬取的數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換和處理。同時,F(xiàn)eapder提供了多種數(shù)據(jù)存儲選項,可以將處理后的數(shù)據(jù)存儲到數(shù)據(jù)庫、文件系統(tǒng)或消息隊列中,并支持?jǐn)?shù)據(jù)導(dǎo)出和導(dǎo)入。
總結(jié)來說,F(xiàn)eapder通過分布式異步任務(wù)調(diào)度和處理的方式,實現(xiàn)了高效、靈活和可擴(kuò)展的爬蟲框架。它的設(shè)計使得用戶可以簡單地配置和管理爬蟲任務(wù),并方便地進(jìn)行數(shù)據(jù)處理和存儲。無論是小規(guī)模的數(shù)據(jù)采集還是大規(guī)模的分布式爬蟲任務(wù),F(xiàn)eapder都是一個強(qiáng)大的選擇。
2.feapder鏡像拉取
feapder是一個基于Python的分布式爬蟲框架,它可以幫助用戶快速構(gòu)建高效、穩(wěn)定的爬蟲系統(tǒng)。在使用feapder之前,需要先拉取feapder的鏡像。
鏡像拉取命令如下:
docker pull feapder/feapder
這個命令會從Docker Hub上拉取feapder的最新版本鏡像。拉取完成后,可以使用以下命令查看已經(jīng)拉取的鏡像:
docker images
feapder的鏡像包含了所有需要的依賴和配置,可以直接使用。在使用feapder時,可以通過Docker運(yùn)行feapder鏡像,也可以將鏡像部署到Kubernetes集群中。
使用Docker運(yùn)行feapder鏡像的命令如下:
docker run -it --name feapder feapder/feapder
這個命令會在Docker容器中啟動feapder,并進(jìn)入容器的交互式終端。在容器中可以使用feapder提供的命令行工具來創(chuàng)建、管理爬蟲任務(wù)。
總之,feapder的鏡像拉取非常簡單,只需要執(zhí)行一條命令即可。同時,feapder的鏡像也非常方便使用,可以直接在Docker容器中運(yùn)行,也可以部署到Kubernetes集群中。
3.docker部署feapder部署環(huán)境
feapder是一個基于Python的分布式爬蟲框架,可以用于快速開發(fā)各種類型的爬蟲。在使用feapder時,可以選擇使用docker進(jìn)行部署,以便更方便地管理和部署爬蟲。
以下是使用docker部署feapder的詳細(xì)步驟:
安裝docker和docker-compose
在開始之前,需要先安裝docker和docker-compose??梢詤⒖脊俜轿臋n進(jìn)行安裝。
拉取feapder鏡像
可以使用以下命令從Docker Hub上拉取feapder鏡像:
docker pull feapder/feapder
創(chuàng)建docker-compose.yml文件
在本地創(chuàng)建一個docker-compose.yml文件,用于定義feapder的容器和相關(guān)配置。以下是一個示例文件:
version: '3'
services:
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
- ./redis-data:/data
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: feapder
ports:
- "3306:3306"
volumes:
- ./mysql-data:/var/lib/mysql
feapder:
image: feapder/feapder
environment:
- REDIS_HOST=redis
- MYSQL_HOST=mysql
- MYSQL_USER=root
- MYSQL_PASSWORD=root
- MYSQL_DATABASE=feapder
volumes:
- ./feapder-data:/app/data
depends_on:
- redis
- mysql
在這個文件中,定義了三個服務(wù):redis、mysql和feapder。其中,redis和mysql分別用于存儲爬蟲的任務(wù)隊列和數(shù)據(jù),feapder則是爬蟲的運(yùn)行環(huán)境。
啟動容器
在本地的項目目錄下,運(yùn)行以下命令啟動容器:
docker-compose up -d
這個命令會啟動所有定義在docker-compose.yml文件中的服務(wù),并在后臺運(yùn)行。
進(jìn)入feapder容器
可以使用以下命令進(jìn)入feapder容器:
docker exec -it feapder_feapder_1 /bin/bash
其中,feapder_feapder_1是容器的名稱,可以使用docker ps命令查看。
運(yùn)行爬蟲
在feapder容器中,可以使用feapder命令來運(yùn)行爬蟲。例如,可以使用以下命令運(yùn)行一個簡單的爬蟲:
feapder run spider demo
這個命令會運(yùn)行名為demo的爬蟲。
以上就是使用docker部署feapder的詳細(xì)步驟。通過使用docker,可以更方便地管理和部署feapder爬蟲。
4.feapder部署scrapy項目
Feapder是基于Scrapy框架開發(fā)的分布式爬蟲框架,因此部署Feapder項目也需要先部署Scrapy項目。下面是部署Scrapy項目的詳細(xì)步驟:
1. 創(chuàng)建Scrapy項目
使用Scrapy命令行工具創(chuàng)建一個新的Scrapy項目,例如:
scrapy startproject myproject
2. 編寫Spider
在Scrapy項目中,Spider是爬蟲的核心部分,負(fù)責(zé)定義如何抓取網(wǎng)站的數(shù)據(jù)。在Scrapy項目中,Spider通常是一個Python類,需要繼承Scrapy提供的Spider類,并實現(xiàn)一些必要的方法。
例如,下面是一個簡單的Spider示例:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['http://www.example.com']
def parse(self, response):
# 解析網(wǎng)頁內(nèi)容
pass
3. 配置Scrapy項目
Scrapy項目的配置文件是settings.py,其中包含了一些Scrapy的配置選項,例如爬蟲的User-Agent、下載延遲等等。在配置文件中,還可以設(shè)置Scrapy使用的中間件、管道等等。
例如,下面是一個簡單的配置文件示例:
BOT_NAME = 'myproject'
SPIDER_MODULES = ['myproject.spiders']
NEWSPIDER_MODULE = 'myproject.spiders'
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
DOWNLOAD_DELAY = 3
ITEM_PIPELINES = {
'myproject.pipelines.MyPipeline': 300,
}
4. 運(yùn)行Spider
使用Scrapy命令行工具運(yùn)行Spider,例如:
scrapy crawl myspider
以上就是部署Scrapy項目的詳細(xì)步驟。在部署Feapder項目時,可以將Scrapy項目作為Feapder的一個子項目,然后在Feapder中調(diào)用Scrapy項目的Spider來完成具體的爬取任務(wù)。文章來源:http://www.zghlxwxcb.cn/news/detail-637934.html
適用于零基礎(chǔ)學(xué)習(xí)和進(jìn)階人群的python資源:
① 騰訊認(rèn)證python完整項目實戰(zhàn)教程筆記PDF
② 十幾個大廠python面試專題PDF
③ python全套視頻教程(零基礎(chǔ)-高級進(jìn)階JS逆向)
④ 百個項目實戰(zhàn)+源碼+筆記
⑤ 編程語法-機(jī)器學(xué)習(xí)-全棧開發(fā)-數(shù)據(jù)分析-爬蟲-APP逆向等全套項目+文檔
到了這里,關(guān)于從零開始學(xué)python(十六)爬蟲集群部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!