私は与えられた理由のについてお話しましょう:と使用start_urls
パラメータと同じ名前を
私が合格しscral crawl projename -a start_urls=http:example.com
、次のように、その後にパスstart_urlsをURLをクロールするために追加したプロジェクトでクモクラスを初期化したい、コードは次のとおりです。
class xxxxSpider(CrawlSpider):
name = 'xxxx'
allowed_domains = ['xxxx.gov.cn']
start_urls = [
]
rules = (
Rule(LinkExtractor(allow=(r'page=\d+',))),
Rule(LinkExtractor(allow=('unid',)), callback='parse_item', follow=False),
)
def __init__(self, *a, **kw):
self.start_urls.append(kw.get('start_url'))
super(CrawlSpider, self).__init__(*a, **kw)
self._compile_rules()
論理的に言えば、そこにはカバーがありませんself.start_urls
が、検証に合格することができない、起動時にエラー
( '要求URLに欠落スキーム:%s' は%のself._url)ValueErrorを送出し
解決策:パラメータ名は使用しないで、ライン上の別のものに変更しましたstart_urls
。私はそれがプロジェクトの初期化のプロセスは、引数としてこの名前を使用する必要があります推測し、その後、私は彼がカバーしました。