![](/img/trans.png)
[英]Scrapy Python spider unable to find links using LinkExtractor or by manual Request()
[英]python scrapy unable to find spider while trying to use arguments
我已經成功創建了一個蜘蛛,用於檢索域中每個網頁的鏈接。
我想做同樣的事情,但是對於我托管的盡可能多的域,為此,我更喜歡使用我的蜘蛛,只需將其作為參數添加到要監視的域即可。
此處的文檔說明,我們應該明確定義構造函數並在其中添加參數,然后使用命令scrapy crawl myspider啟動蜘蛛。
這是我的代碼:
class MySpider(BaseSpider):
name= 'spider'
def __init__(self, domain='some_domain.net'):
self.domain = domain
self.allowed_domains = [self.domain]
self.start_urls = [ 'http://'+self.domain ]
def parse(self, response):
hxs = HtmlPathSelector(response)
for url in hxs.select('//a/@href').extract():
if not url.startswith('http://'):
url= URL + url
print url
yield Request(url, callback=self.parse)
但是,啟動
scrapy crawl spider -a domain='mydomain.my_extension'
返回:
ERROR: unable to find spider: spider
當我編寫相同的代碼但沒有顯式的構造函數時,我無法使用爬網執行此操作,而必須使用以下命令:
scrapy runspider /path/to/spider/spider.py
而且我不能在runspider中使用參數,我必須運行爬網
為什么無法使用刮y的爬行蜘蛛? 為什么Spider的名稱永遠不會像Scrapy Runpider那樣被Scrapy爬網讀取?
Scrapy看起來很棒,但是一見鍾情就很麻煩:/
非常感謝您的幫助
如果運行scrapy 0.14,則應在類級別而不是實例級別設置變量。 我認為這已經改變了0.15
我建議閱讀文檔: http : //doc.scrapy.org/en/0.14/topics/spiders.html
class MySpider(BaseSpider):
name= 'spider'
domain = domain
allowed_domains = [self.domain]
start_urls = [ 'http://'+self.domain ]
def parse(self, response):
hxs = HtmlPathSelector(response)
for url in hxs.select('//a/@href').extract():
if not url.startswith('http://'):
url= URL + url
print url
yield Request(url, callback=self.parse)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.