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 分布式爬虫咱就讲完了,还有一些细节的东西,大家在用的时候还需要琢磨一下 。总体来说,这个框架还是比较好用的,上手简单,应对一些不是很复杂的场景绰绰有余,大家可以尝试着将自己的爬虫重构一下,试试这款框架

推荐阅读