63
A
回答
111
使用-a
選項在抓取命令中傳遞了蜘蛛參數。例如:
scrapy crawl myspider -a category=electronics -a domain=system
蜘蛛可以在自己的初始化訪問參數:
class MySpider(scrapy.Spider):
name = 'myspider'
def __init__(self, category='', **kwargs):
self.start_urls = ['http://www.example.com/category/%s' % category]
super().__init__(**kwargs) # python3
self.log(self.domain) # system
從Scrapy文檔摘自:http://doc.scrapy.org/en/latest/topics/spiders.html#spider-arguments
更新2013:添加第二個參數
更新2015:調整措辭
更新2016:使用新的基類,並添加超,感謝@Birla
更新2017年:使用Python3超級
# previously
super(MySpider, self).__init__(**kwargs) # python2
3
要傳遞的參數與命令爬
scrapy抓取myspider -a category ='mycategory'-a domain ='example.com'
爲了將參數傳遞給上scrapyd運行更換-a與-d
捲曲http://your.ip.address.here:port/schedule.json -d 蜘蛛= myspider -d類別= 'mycategory' -d域='的例子。 com'
蜘蛛將在其構造函數中接收參數。
class MySpider(Spider):
name="myspider"
def __init__(self,category='',domain='', *args,**kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.category = category
self.domain = domain
6
使用-a選項運行爬網命令時會傳遞spider參數。例如,如果我想要一個域名作爲參數傳遞給我的蜘蛛,然後我會做這個 -
scrapy爬行myspider -a域=「http://www.example.com」
並在蜘蛛的構造函數中接收參數:
class MySpider(BaseSpider):
name = 'myspider'
def __init__(self, domain='', *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)
self.start_urls = [domain]
#
...
,將工作:)
6
以前的答案是正確的,但你不必聲明構造(__init__
)你想編寫一個scrapy的蜘蛛每一次,你可以只指定參數之前:
scrapy crawl myspider -a parameter1=value1 -a parameter2=value2
,並在你的蜘蛛的代碼,你可以只用它們作爲蜘蛛參數:
class MySpider(Spider):
name = 'myspider'
...
def parse(self, response):
...
if self.parameter1 == value1:
# this is True
# or also
if getattr(self, parameter2) == value2:
# this is also True
,它就可以工作。
相關問題
- 1. 如何將多個參數傳遞給Scrapy蜘蛛(不再支持多個蜘蛛運行'scrapy爬行'錯誤)?
- 2. 在Scrapy中使用遞歸蜘蛛[Python]
- 3. scrapy:蜘蛛中的小蜘蛛?
- 4. Scrapy與Scrapy蜘蛛
- 5. 傳遞參數給一個Python腳本內scrapy蜘蛛
- 6. 傳遞參數給蜘蛛__init__
- 7. Scrapy DOMAIN_NAME的蜘蛛
- 8. Python的scrapy蜘蛛
- 9. scrapy中的連環蜘蛛
- 10. Scrapy:如何通過命令提示符將參數列表傳遞給蜘蛛?
- 11. 從scrapy參數的腳本中運行Scrapy蜘蛛
- 12. 如何定義scrapy shell使用哪個蜘蛛?
- 13. 如何限制蜘蛛使用scrapy
- 14. 如何比較每個Scrapy蜘蛛項目與另一個Scrapy蜘蛛項目?
- 15. 如何在一定數量的請求後停止scrapy蜘蛛?
- 16. Scrapy蜘蛛Xpath的選擇
- 17. Scrapy蜘蛛解析器調用函數
- 18. 如何從scrapy蜘蛛爬蟲設置參數
- 19. 使用Scrapy創建蜘蛛,蜘蛛生成錯誤
- 20. Scrapy調用除命令行指定的蜘蛛以外的其他蜘蛛
- 21. 如何整合蜘蛛和scrapy-ctl.py
- 22. 如何重新啓動Scrapy蜘蛛
- 23. scrapy蜘蛛碼校驗
- 24. Scrapy蜘蛛不工作
- 25. Scrapy - 運行蜘蛛多次
- 26. Scrapy雅虎集團蜘蛛
- 27. Scrapy找不到蜘蛛
- 28. Scrapy蜘蛛過早關閉
- 29. scrapy蜘蛛沒有發現
- 30. Scrapy CrawlSpider沒有蜘蛛
嘿謝謝你的答案。 但可以說,我想傳遞兩個參數,我會使用類似: scrapy爬行myspider -a類別=電子域=系統 或 scrapy爬行myspider -a類別=電子-a域=系統 – 2013-03-26 18:32:53
scrapy抓取myspider -a category = electronics -a domain = system – 2013-03-26 18:55:03
上面的代碼對我來說只是部分工作。例如。如果我使用'self.domain'定義域,我仍然無法在'__init__'方法之外訪問它。 Python拋出一個未定義的錯誤。順便說一句,爲什麼你省略了「超級」呼叫? PS。我正在使用CrawlSpider類 – Birla 2014-09-24 10:57:53