Scrapyd && Logparser

Scrapyd快速入门

简介:

  1. Scrapyd是用来运行scrapy爬虫的一个服务
  2. 特点:允许部署scrapy项目并且通过HTTP JSON的方式来控制爬虫
  3. 对scrapy的理解:
    • scrapyd其实是一个服务器端的服务,真正部署爬虫的时候需要两个东西:
      • 服务器端:scrapyd
      • 客户端:scrapy-client

安装

服务器端

pip install scrapyd

conda install scrapyd

客户端

pip install scrapyd-client 

conda install scrapyd-client

运行

试运行scrapyd查看可视化界面

命令行下输入scrapyd,正常运行后会有日志提示

Scrapyd web console available at http://127.0.0.1:6800/

浏览器访问此默认地址即可查看可视化界面

部署scrapy项目

在创建scrapy爬虫项目myspider后,修改scrapy.cfg配置文件默认如下:

[settings]
default = myspider.settings # myspider为创建的scrapy项目名称

[deploy:server_name] # 为服务器指定一个名字,这里为server_name
url = http://localhost:6800/ # 部署项目的服务器地址,此处为本地部署
project = myspider # 工程名myspider
# 实际上产环境下需要验证登录scrapyd服务器
# username = ***
# password = ***

进入爬虫根目录,即有scrapy.cfg文件的一级,运行

scrapyd-deploy <target> -p <project>  # target为配置的服务器名字,project为项目名称

这里对应配置文件即为:

scrapyd-deploy server_name -p myspider

查看部署结果:

scrapyd-deploy -L <服务器名称>

或者查看http://localhost:6800/页面

注: 部署操作会打包当前项目,如果当前项目下有setup.py文件,就会使用其中的配置,没有就会自动创建一个(后期可以根据自己的需要修改里面的信息,也可以暂时不管它) 。从返回的结果里面,我们可以看到部署的状态,项目名称,版本号和爬虫个数,以及当前的主机名称

到现在只是部署成功,还没有启动爬虫

使用API管理爬虫

官方推荐使用curl来管理爬虫。Windows安装地址

查看服务器端状态
curl http://localhost:6800/daemonstatus.json
启动爬虫:
curl http://localhost:6800/schedule.json -d project=PROJECT_NAME -d spider=SPIDER_NAME

下载可以进入http://localhost:6800/查看

停止一个爬虫:
curl http://localhost:6800/cancel.json -d project=PROJECT_NAME -d job=JOB_ID

启动爬虫时会输出的信息中会包含有JOB_ID

列出项目
curl http://localhost:6800/listprojects.json
列出爬虫、版本、job信息
curl http://localhost:6800/listspiders.json?project=PROJECT_NAME
删除爬虫项目
curl http://localhost:6800/delproject.json -d project=PROJECT_NAME -d job=JOB_ID

Logparser

简介

  • Github

  • 在scrapyweb中解析scrapyd的日志

  • logparser库的工作原理是每隔一段时间(默认10s)查看一下日志文件夹,然后解析,并生成stats.json文件。scrapyd在开启了端口后可以访问scrapyd的目录,因此可以在不修改scrapyd的情况下对日志解析

使用

安装

pip install logparser

或者

git clone https://github.com/my8100/logparser.git
cd logparser
python setup.py install

作为service运行

通过命令启动
logparser
查看当前状态

http://127.0.0.1:6800/logs/stats.json

获取某个爬虫人物的日志分析详情

http://127.0.0.1:6800/logs/projectname/spidername/jobid.json