RT,我这边有需求处理一批 URL 入口,其中可能会定制传入相应的参数,形式大概类似于:
execute(['scrapy', 'crawl', 'woshiscrapy', '-a', 'para=%s' % para)
试过多进程和多线程,完全不适配,似乎异步 twisted 好像需要其他法子解决速度问题。
本来放弃速度,准备直接 for 循环传入,结果发现调用 execute 执行 scrapy,爬完了第一个 url,就直接退出了主程序。
很无奈,求各位大佬给点具体的方案建议,小弟有点没招了。
1
Leigg 2018-05-03 20:41:58 +08:00 via Android
参数得有规律才行,用多进程可以的。
|
2
arithboy 2018-05-03 22:42:35 +08:00 1
你把 url 和相应的参数拼成一个 url 列表,然后赋值到 self.start_urls 变量里面跑
要多进程的话,把 url 放到队列里面,然后启动多个 scrapy 从队列中取 |
3
lins05 2018-05-03 23:28:25 +08:00
可以用 scrapyrt, 把 scrapy project 变成一个 http service, 然后调用 http api
|
4
Mitt 2018-05-04 02:04:50 +08:00 via iPhone
可以了解一下 scrapy_redis 然后重写 make_requests_from_data 来实现自定义参数传入
|