ドメインのすべての Web ページのリンクを取得するスパイダーの作成に成功しました。
同じことをしたいのですが、ホストするドメインと同じ数のドメインに対して、監視するドメインの引数としてスパイダーを追加するだけで、スパイダーを使用することを好みます。
ここのドキュメントでは、コンストラクターを明示的に定義し、パラメーターを追加してから、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 ではパラメーターを使用できません。代わりにクロールを実行する必要があります。
スクレイピー クロール スパイダーを使用できないのはなぜですか? スクレイピー・ランスパイダーのように、スパイダーの名前がスクレイピー・クロールで読み取られないのはなぜですか?
Scrapy は素晴らしいように見えますが、一見すると非常に気がかりです :/
助けてくれて本当にありがとうございます