pyspider 關(guān)于項目

2023-02-16 16:06 更新

關(guān)于項目

在大多數(shù)情況下,項目是您為一個網(wǎng)站編寫的一個腳本。

  • 項目是獨立的,但您可以將另一個項目作為模塊導(dǎo)入 from projects import other_project
  • 一期工程有5個狀態(tài):TODO,STOP,CHECKING,DEBUG和RUNNINGTODO - 創(chuàng)建一個腳本來編寫STOP- 您可以將項目標(biāo)記為STOP您希望它停止(= =)。CHECKING- 修改正在運行的項目時,為防止不完整修改,項目狀態(tài)將CHECKING自動設(shè)置。DEBUG/ RUNNING- 這兩種狀態(tài)對蜘蛛沒有區(qū)別。但是將它標(biāo)記為DEBUG第一次運行然后將其更改RUNNING為檢查后是很好的。
  • 抓取速度被控制,rate并burst用令牌桶算法。rate - 一秒鐘內(nèi)有多少請求burst- 考慮到這種情況,rate/burst = 0.1/3這意味著蜘蛛每10秒抓一頁。所有任務(wù)都已完成,項目每分鐘檢查最后更新的項目。假設(shè)找到3個新項目,pyspider將“爆發(fā)”并抓取3個任務(wù)而不等待3 * 10秒。但是,第四項任務(wù)需要等待10秒。
  • 要刪除項目,請設(shè)置group為delete和狀態(tài)STOP,等待24小時。

on_finished 打回來

您可以on_finished在項目中覆蓋方法,當(dāng)task_queue變?yōu)?時將觸發(fā)該方法。

示例1:當(dāng)您啟動項目以爬網(wǎng)包含100個頁面的網(wǎng)站時,on_finished將在成功爬網(wǎng)100個頁面或重試后失敗時觸發(fā)回調(diào)。

示例2:具有auto_recrawl任務(wù)的項目將永遠(yuǎn)不會觸發(fā)on_finished回調(diào),因為當(dāng)其中存在auto_recrawl任務(wù)時,時間隊列將永遠(yuǎn)不會變?yōu)?。

示例3:具有@every修飾方法的項目將在on_finished每次新提交的任務(wù)完成時觸發(fā)回調(diào)。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號