python爬蟲萬能代碼 網絡爬蟲軟件有哪些( 三 )


調試開發過程中,我們可能需要針對某個請求進行調試,常規的做法是修改下發任務的代碼 。但這樣并不好,改來改去可能把之前寫好的邏輯搞亂了,或者忘記改回來直接發布了,又或者調試的數據入庫了,污染了庫里已有的數據,造成了很多本來不應該發生的問題 。
本框架支持Debug爬蟲,可針對某條任務進行調試,寫法如下:
if __name__ == "__main__":spider = SpiderTest.to_DebugSpider(redis_key="feapder:spider_test", request=feapder.Request("http://www.baidu.com"))spider.start()對比之前的啟動方式:
spider = SpiderTest(redis_key="feapder:spider_test")spider.start()可以看到,代碼中 to_DebugSpider 方法可以將原爬蟲直接轉為 debug 爬蟲,然后通過傳遞 request 參數抓取指定的任務 。
【python爬蟲萬能代碼 網絡爬蟲軟件有哪些】通常結合斷點來進行調試,debug 模式下,運行產生的數據默認不入庫 。
除了指定 request 參數外,還可以指定 request_dict 參數,request_dict 接收字典類型,如 request_dict={“url”:”http://www.baidu.com”}, 其作用于傳遞 request 一致 。request 與 request_dict 二者選一傳遞即可 。
運行多個爬蟲通常,一個項目下可能存在多個爬蟲,為了規范,建議啟動入口統一放到項目下的 main.py 中,然后以命令行的方式運行指定的文件 。
例如如下項目:
項目中包含了兩個spider,main.py寫法如下:
from spiders import *from feapder import Requestfrom feapder import ArgumentParserdef test_spider():spider = test_spider.TestSpider(redis_key="spider:report")spider.start()def test_spider2():spider = test_spider.TestSpider2(redis_key="spider:report")spider.start()if __name__ == "__main__":parser = ArgumentParser(description="Spider測試")parser.add_argument("--test_spider", action="store_true", help="測試Spider", function=test_spider)parser.add_argument("--test_spider2", action="store_true", help="測試Spider2", function=test_spider2)parser.start()這里使用了 ArgumentParser 模塊,使其支持命令行參數,如運行 test_spider:

python3 main.py –test_spider
分布式分布式說白了就是啟動多個進程,處理同一批任務 。Spider 支持啟動多份,且不會重復發下任務,我們可以在多個服務器上部署啟動,也可以在同一個機器上啟動多次 。
總結到這里,Spider 分布式爬蟲咱就講完了,還有一些細節的東西,大家在用的時候還需要琢磨一下 。總體來說,這個框架還是比較好用的,上手簡單,應對一些不是很復雜的場景綽綽有余,大家可以嘗試著將自己的爬蟲重構一下,試試這款框架

推薦閱讀