使用带参数的 Scrapyd
Use Scrapyd with arguments
我正在使用 Scrapyd 来使用 scrapy 作为网络服务。
我想使用带有如下参数的 curl 命令:
curl http://myip:6800/schedule.json -d project=default -d spider=myspider -d domain=www.google.fr
但是我不知道如何获取爬虫中的参数域
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]
我有时需要在参数中传递一个域或多个域。
谢谢!
由于 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...
class YourSpider(scrapy.Spider):
def __int__(self, *args, **kwargs):
super(YourSpider, self).__init__(*args, **kwargs)
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
输入:print(spider.arg1)
,输出:val1
我正在使用 Scrapyd 来使用 scrapy 作为网络服务。
我想使用带有如下参数的 curl 命令:
curl http://myip:6800/schedule.json -d project=default -d spider=myspider -d domain=www.google.fr
但是我不知道如何获取爬虫中的参数域
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]
我有时需要在参数中传递一个域或多个域。
谢谢!
由于 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...
class YourSpider(scrapy.Spider): def __int__(self, *args, **kwargs): super(YourSpider, self).__init__(*args, **kwargs)
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
输入:
print(spider.arg1)
,输出:val1