python#使用scrapyd服務的方法與步驟
scrapyd = scrapy + deploying
把scrapy程式發布到上面的一套由python寫好的服務
it enables you to deploy (upload) your projects and control their spiders
using
a json api.
言外之意:scrapyd
是一種服務,它能跟scrapy
開發的爬蟲程式配套使用的,其可以
通過發布scrapy
程式並通過一套post
/get
請求指令(檢視)來控制發布到
scrapyd
服務上的scrapy
程式。
a) 安裝scrapyd
安裝好scrapyd,先開啟服務,
#安裝好scrapyd
$ pip install scrapyd
#開啟服務 預設都不需要載入
最後一步在所在的當前指令目錄中會出現空dbs、eggs、logs
檔案,顧名思義這三個檔案是
後期部署scrapy
爬蟲專案的管理以及記錄日誌的地方,所以初步可以看到scrapyd
是乙個
容器,或者更準確點就是需要在後台開起來的服務,以下本人稱scrapyd
為scrapyd服務
以
區分scrapy
專案
b) 安裝scrapyd-client
這是乙個部署scrapy
到scrapyd服務
中的工具,
$ pip install scrapyd-client
該安裝包擁有scrapyd-deploy 命令,是爬蟲專案發布到srcapyd服務
的關鍵步驟,使用的前提是
必須要開啟scrapyd
服務,也就是第一步a)
這一步window需要額外處理,linux不需要
a) 建立爬蟲的通常命令
$ scrapy startproject sipdername
進入爬蟲的專案頂級目錄(之後操作都在該級目錄中),在指令所在目錄下會自動建立爬蟲專案模板,
同時會在頂層目錄中生成乙個scrapy.cfg配置,這個配置本來如果你不發布專案的話,基本上可以忽略。
該配置是發布爬蟲專案到scrapyd服務
的重要配置。
b) 修改scrapy.cfg內容
注釋掉scrapy.cfg檔案中的url(預設埠6800) 以及 [desploy:scrapyd部署專案名]
c) 檢視服務以及專案是否正常
$ scrapyd-deploy
-l
正常情況下會顯示部署在`scrapyd服務`上的爬蟲專案,如果出錯,最大的可能性就是沒有開啟`scrapyd
服務`,因為可以在任何目錄中開啟`scrapyd服務`,所以該指令是用來查詢當前正在開啟的`scrapyd服務`
的
$ scrapy list
正常情況下會列出當前你的爬蟲專案,如果列不出來或者報錯,你先看下是**語法有問題。
以上2步驟都沒有問題
的話,就開始部署專案(部署這裡不需要關注爬蟲名)
$ scrapyd-deploy 部署專案名(cfg:中的部署專案名) -p 爬蟲專案名
說明
:
部署專案名
: 是指配置中的專案名稱看 2.b) 你自己設定的名稱,是scrapyd識別不同部署專案的名稱
專案名
: 這個是scrapy生成的專案名,也就是你的頂級專案目錄名稱
部署成功之後會在scrapy專案中生成兩個檔案build和project.egg-info,分別是通過scrapyd-deploy
命令生成的編譯檔案以及一些專案配置資訊
以上可以看到通過curl命令就是獲取介面命令的方法,那麼我們很容易通過python中的
requests包來傳送請求,來執行認為,這個方法可以整合到django這樣的專案下做定時任務
一種簡單方便的許可權控制方案
所有的頁面都繼承於乙個基頁面,這個基類中的load事件用於判斷許可權 protected pageaccess asstring private sub page load subpage load byval sender assystem.object byval e as system.eve...
MFC下在利用控制台輸入輸出 方便除錯
mfc下利用trace語句可以很方便的列印除錯資訊,但是有些時候如果要列印另外的資訊,為了分析資料的方便,不想與trace的資訊混在一起。這個時候,利用控制台輸出就是乙個比較不錯的捷徑。雖然有很多侷限性,比如,只能開乙個控制台等等,但是,這個方法還是比較有吸引力,因為其使用就如同控制台程式一樣,比讀...
訊號量 也是同步鎖,可用來控制線程的併發數
訊號量 也是同步鎖,可用來控制線程的併發數 import threading,time class mythread threading.thread defrun self if semaphore.acquire 同時執行五個執行緒,acquire 放乙個程序進去計數器 1 print self...