您现在的位置是:主页 > news > 仙居做网站/合肥网络推广网络运营
仙居做网站/合肥网络推广网络运营
admin2025/5/5 19:34:58【news】
简介仙居做网站,合肥网络推广网络运营,wordpress读法,网站建设优化怎么做上一节,我们介绍了通过Scrapyd提供的 http接口来运行Scrapy项目,但这个前提条件是需要事先将Scrapy项目打包成egg文件。虽然可以使用setup-tools工具实现打包,但整个过程太繁琐。这里介绍第三方库Scrapyd-Client。它的功能主要有两个…
仙居做网站,合肥网络推广网络运营,wordpress读法,网站建设优化怎么做上一节,我们介绍了通过Scrapyd提供的 http接口来运行Scrapy项目,但这个前提条件是需要事先将Scrapy项目打包成egg文件。虽然可以使用setup-tools工具实现打包,但整个过程太繁琐。这里介绍第三方库Scrapyd-Client。它的功能主要有两个…
上一节,我们介绍了通过Scrapyd提供的 http接口来运行Scrapy项目,但这个前提条件是需要事先将Scrapy项目打包成egg文件。虽然可以使用setup-tools工具实现打包,但整个过程太繁琐。这里介绍第三方库Scrapyd-Client。它的功能主要有两个:
- 将项目打包成egg文件;
- 将egg文件通过Scrapyd的addversion.json接口上传到目标服务器;
安装Scrapyd-Client
pip install scrapyd-client
修改Scrapy项目
这里还需要修改scrapy项目的配置文件,在项目根目录下有一个scrapy.cfg文件,修改内容如下:
[deploy:scrapyd_name] #默认情况下并没有scrapyd_name,它只是一个名字target,可以在配置文件中写多个名字不同的deploy
url = http://ip:port/ #要部署项目的服务器的地址
# url = http://localhost:6800/ 正常情况这里是注释的,用于本地本部署
project = myspider 项目名字
username = john #访问服务器所需的用户名和密码(如果不需要密码可以不写)
password = secret
检查scrapy配置是否正确:
scrapyd-deploy -l
部署项目
首先定位到scrapy项目的根目录,执行如下命令:
(Pa) bd@pyvip:~/zhaoping/bishe$ scrapyd-deploy --version 202002261622
/home/bd/.virtualenvs/Pa/bin/scrapyd-deploy:23: ScrapyDeprecationWarning: Module `scrapy.utils.http` is deprecated, Please import from `w3lib.http` instead.from scrapy.utils.http import basic_auth_header
Packing version 202002261622
Deploying to project "bishe01" in http://106.14.148.168:6800/addversion.json
Server response (200):
{"status": "ok", "version": "202002261622", "spiders": 9, "project": "bishe01", "node_name": "pyvip"}
--version用来指定版本号,node_name是主机名,可有配置文件指定。
启动爬虫项目
现在就可以通过Scrapyd提供的schedule.json接口启动爬虫程序,命令如下:
curl http://ip:port/schedule.json -d project=xxx -d spider=yyy
除了这两个参数,还有其他参数可供选择,还支持post请求,具体如下:
import requestsadder='http://127.0.0.1:6800'
data = {'project':'v1','version':'12379','setting':['ROBOTSTXT_OBEY=True','CONCURRENT_REQUESTS=32']
}resp = requests.post(adder,data=data)
向scrapy中的spider传递参数
有时需要根据项目的实际需求向spider传递参数以控制spider的行为,比如说,根据用户提交的url来控制spider爬取的网站。在这种情况下,可以使用下面方法向spider传递参数。
在用scrapyd控制spider的时候,可以向schedule.json发送-d选项加入参数,同时的,也需要在spider的构造函数里重写。例如:
curl http://localhost:6800/schedule.json -d project=myproject -d spider=myspider -d tp=tp_news_spider
import scrapyclass MySpider(scrapy.Spider):name = 'myspider'def __init__(self, category=None, *args, **kwargs):super(MySpider, self).__init__(*args, **kwargs)self.start_urls = ['http://www.example.com/categories/%s' % category]