Windows部署python scrapy爬虫

wylc123 1年前 ⋅ 3693 阅读

一、安装 scrapyd

D:\>pip install scrapyd

本人对这个scrapyd 也是一知半解,通过摸索,简单理解为一个高级的网站,可以通过它本身的各种 json api 控制你的爬虫,OK,现在启动网站( ctrl+c 关闭)

D:\>scrapyd

出现以下内容表明,已经部署成功啦

2018-07-21T23:59:41+0800 [-] Loading c:\programdata\anaconda3\envs\python27\lib\site-packages\scrapyd\txapp.py...
2018-07-21T23:59:43+0800 [-] Scrapyd web console available at http://0.0.0.0:6800/
2018-07-21T23:59:43+0800 [-] Loaded.
2018-07-21T23:59:43+0800 [twisted.application.app.AppLogger#info] twistd 16.6.0 (c:\programdata\anaconda3\envs\python27\python.exe 2.7.13) starting up.
2018-07-21T23:59:43+0800 [twisted.application.app.AppLogger#info] reactor class: twisted.internet.selectreactor.SelectReactor.
2018-07-21T23:59:43+0800 [-] Site starting on 6800
2018-07-21T23:59:43+0800 [twisted.web.server.Site#info] Starting factory <twisted.web.server.Site instance at 0x0000000004AB36C8>
2018-07-21T23:59:43+0800 [Launcher] Scrapyd 1.1.1 started: max_proc=16, runner='scrapyd.runner'

 在阿里云本地输入http://localhost:6800/ 已经可以打开这个网站啦!但是我们要从本地开发机上访问它并且调用它的json api,怎么办呢!输入阿里云的外网地址+端口,怎么回事,打不开?!然后我想起了阿里云服务器都必须在安全组里对实例进行配置规则才能访问该端口,好的,我去增加了6800的端口安全组,YES,在本地开发机上能访问到这个地址啦!!!为自己的机制点赞!

二、在本地开发机上安装scrapyd-client 

D:\>pip install scrapyd-client

执行命令, 安装完成后, 在python环境的scripts中会出现scrapyd-deploy无后缀文件, 这个scrapyd-deploy无后缀文件是启动文件, 在Linux系统下可以运行, 在windows下是不能运行的, 所以我们需要编辑一下使其在windows可以运行

C:\Program Files (x86)\Python36-32\Scripts中,新建一个scrapyd-deploy.bat空白文件,两个内容之间切记一个空格

@echo off

"C:\softs\Python\Python36\python.exe" "C:\softs\Python\Python36\Scripts\scrapyd-deploy" %*

嗯,然后进入爬虫项目目录(进入带有scrapy.cfg文件的目录),

输入D:\pyworkd\bt2014>scrapyd-deploy

 出现下面这个,scrapyd-deploy安装完毕!

Unknown target: default

三、修改爬虫项目配置文件scrapy.cfg 

打开爬虫项目中的scrapy.cfg文件, 这个文件就是给scrapyd-deploy使用的将url这行代码解掉注释, 并且设置你的部署名称

[settings]
default = huawei.settings

[deploy:hw]  # hw 自定义
url = http://localhost:6800/
project = huawei  # 项目名字

再次执行scrapyd-deploy -l, 可以看到设置的名称

开始打包前, 执行一个命令 scrapy list, 这个命令执行成功说明可以打包了, 如果没执行成功说明还有工作没完成

四、到此我们就可以开始打包scrapy项目到scrapyd了, 用命令结合scrapy项目中的scrapy.cfg文件设置来打包

执行打包命令: scrapyd-deploy 部署名称 -p 项目名称

如: scrapyd-deploy hw -p huawei

部署成功就可以去网页中127.0.0.1:6800 查看爬虫运行状态

五、启动我们的爬虫!要一个 curl  工具,windows没有!点服务器部署的那个scrapyd的网站上提示的那个链接去下载吧!最新的来一套,解压,添加系统环境变量。

curl工具下载地址:https://curl.haxx.se/windows/

运行爬虫,一定要使用cmd

命令:
curl http://localhost:6800/schedule.json -d project=PROJECT_NAME -d spider=SPIDER_NAME

示例:
curl http://localhost:6800/schedule.json -dproject=huawei -d spider=hw


D:\pyworks\bt1024>scrapyd-deploy aliyun -p bt1024
Packing version 1554259491
Deploying to project "bt1024" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "DESKTOP-92UJUET", "status": "ok", "project": "bt1024", "version": "1554259491", "spiders": 1}


D:\pyworks\bt1024>curl http://localhost:6800/schedule.json -d project=bt1024 -d spider=bt1024
{"node_name": "DESKTOP-92UJUET", "status": "ok", "jobid": "c6c12de855ba11e9ac0edcfe071af184"}
#启动爬虫 此时参数为 -d project=项目名称 -d spider=爬虫名称
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/schedule.json -d project=firstspider -d spider=dsfootball
{"status": "ok", "jobid": "13c328408ce011e8bcabe99e10d6e876", "node_name": "iZrtjqvcszmo77Z"}
#停止爬虫 此时参数为 -d project=项目名称 -d job=那个网站上显示的job内容
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/cancel.json -d project=firstspider -d job=13c328408ce011e8bcabe99e10d6e876
{"status": "ok", "prevstate": null, "node_name": "iZrtjqvcszmo77Z"}
#删除项目 此时参数为 -d project=项目名称
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/delproject.json -d project=firstspider
{"status": "ok", "node_name": "iZrtjqvcszmo77Z"}

其他:

停止爬虫 
爬虫执行成功后,终端会给出该爬虫的 jobid 值,表示该爬虫,后面停止爬虫需要提供jobid 
http://localhost:6800/jobs  可以查看jobid
curl http://localhost:6800/listjobs.json?project=huawei  可以获取当前jobid

切记:停止后如果代码需要修改,记得重新部署再执行。

删除scrapy项目

注意:一般删除scrapy项目,需要先执行命令停止项目下在远行的爬虫

curl http://localhost:6800/delproject.json -d project=scrapy项目名称


常用接口:

调度爬虫

curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider

# 带上参数
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1

取消

curl http://localhost:6800/cancel.json -d project=myproject -d job=jobid

列出项目

curl http://localhost:6800/listprojects.json

列出版本

curl http://localhost:6800/listversions.json?project=myproject

列出爬虫

curl http://localhost:6800/listspiders.json?project=myproject

列出job

curl http://localhost:6800/listjobs.json?project=myproject

删除版本

curl http://localhost:6800/delversion.json -d project=myproject -d version=r99

删除项目

curl http://localhost:6800/delproject.json -d project=myproject

参考:

阿里云WindowsServer部署python scrapy爬虫

部署scrapy爬虫

API - Scrapyd 1.2.0文档

Scrapyd api 使用说明


注意:本文归作者所有,未经作者允许,不得转载

更多内容请访问:IT源点
相关文章推荐

全部评论: 0

    我有话说: