Crawlab的使用

上篇文章安装了Crawlab,现在开始使用。

0.6.0beta目前有问题,建议稳定版出了再用,所以本文用截止发布文章时的最新稳定版0.5.1。

本文最核心的内容在文档-SDK-Python文档-爬虫集成中,即配置scrapy爬虫和单个py文件爬虫所需的设置。

先说一下,如果在Crawlab中运行爬虫时提示没有库,看文档

scrapy爬虫

文档

将上图压缩后的zip文件上传,上传时开启是否为Scrapy。另外,上传时有提示要从根目录下开始压缩爬虫文件,文档中也有说。

上传后,从文件中打开py代码文件,在settings.py中找到 ITEM_PIPELINES,添加

ITEM_PIPELINES = {
    'crawlab.pipelines.CrawlabMongoPipeline': 888,
}

添加的时候手动确保缩进是4个空格,也可以上传前先添加。这就会将数据保存到上篇文章中自己设置的数据库中;然后注释掉自己写的管道(例如保存数据到MongoDB的管道,如果你手动在pipelines.py写了的话。因为不注释的话,若Crawlab和你自己的管道用的同一个服务器,则会导致插入重复数据);然后确保对管道的修改生效,如图,因有时可能不生效;然后再启动爬虫。

确保管道不是你自己写的管道,而是Crawlab的

单个py文件的爬虫

同样需将py文件压缩成zip后上传。

上传后,在保存数据的地方添加

# 引入保存结果方法
from crawlab import save_item

# 这是一个结果,需要为 dict 类型
result = {'name': 'crawlab'}

# 调用保存结果方法
save_item(result)

也可以上传前先添加。这就会将数据保存到上篇文章中自己设置的数据库中,然后再启动爬虫。注意,本地测试时不用手动安装crawlab这个库,你只需要保证在添加这3行之前,你的代码能正常运行,然后添加它们(添加后不用再在本地运行测试),再上传;上传代码后,在网页端运行代码时它会从自带的crawlab库中导入save_item,那个库具体叫crawlab-sdk,可以在下篇文章查看已安装的库部分看看crawlab-sdk在哪;如果你在本地安装了crawlab,由于它自带一些库,则可能导致自带的库和你以前手动安装的库冲突,从而运行代码时报错。

另外,对于单文件爬虫,如果代码中需要通过终端的用户输入来给变量赋值,则可以用下面的写法

import sys

start_page_number = int(sys.argv[1])
end_page_number = int(sys.argv[2])

print(start_page_number)
print(end_page_number)

添加爬虫时需在执行命令处写python py文件名 变量值1 变量值2,如python 1.py 5 10,这样运行后sys.argv[1]的值就是5,sys.argv[2]的值就是10,sys.argv[0]的值是1.py。

上面代码的运行结果

 如果添加爬虫时的执行命令中不写参数,也可以在运行爬虫时的弹窗中写参数,如图中可以写5 10,这样就将5和10分别传给sys.argv[1]和sys.argv[2]。在这里写参数,比在添加爬虫时的执行命令中更灵活,因可能每次运行所需的参数不同,如这一次爬取第1到10页,传入1 10,下一次爬取第11到20页,传入11 20;若写在添加爬虫时的执行命令中就写死了,每次运行都得先修改执行命令为期望的值再运行。

定时任务

Crawlab0.5.1文档Crawlab0.6.0beta文档

Crawlab的定时任务的Cron表达式和Linux的crontab一样,Crawlab0.5.1文档中引入了一篇详细介绍crontab的文章,Crawlab0.6.0beta文档中引入了一个提示:

提示

如果您不确定如何编写 Cron 表达式,您可以导航至https://crontab.guru/来进行校验。

猜你喜欢

转载自blog.csdn.net/fj_changing/article/details/124394269
今日推荐