使用带有参数的Scrapyd

时间:2016-03-10 10:04:28

标签: python web-scraping scrapy scrapyd

我正在使用Scrapyd将scrapy用作webservice。

我想使用带有如下参数的curl命令:

curl http://myip:6800/schedule.json -d project=default -d spider=myspider -d domain=www.google.fr

但我不知道如何在Crawler中获取参数域。

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

class MyItem(Item):
    url = Field()

class HttpbinSpider(CrawlSpider):

    name = "expired"
    start_urls = [domain]

我需要在参数中传递一个域或多个

谢谢!

2 个答案:

答案 0 :(得分:1)

由于scrapy缺少功能,这是不可能的。

用户通常通过将参数序列化为curl来解决此问题 然后在蜘蛛的 init ()中反序列化。

curl http://myip:6800/schedule.json -d project=default -d spider=myspider -d domains='["www1.example.com", "www2.example.com"]'

代码:

class MySpider(Spider):
    def __init__(self, domains=None):
        domains = json.loads(domains)
        # do something with domains...

答案 1 :(得分:1)

  1. class YourSpider(scrapy.Spider):
        def __int__(self, *args, **kwargs):
            super(YourSpider, self).__init__(*args, **kwargs)
    
  2. curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
    
  3. IN:print(spider.arg1),OUT:val1