2017-04-09 3 views
0

私のScrapy出力ファイルでは、いくつかのアイテムが見つからないので、それらのページが3番目のルールとして手動で追加されています。Scrapルールを追加しましたが、それ以上のアイテムを削っていません

class KjvSpider(CrawlSpider): 
    name = 'kjv' 
    start_urls = ['file:///G:/OEBPS2/bible-toc.xhtml'] 

    rules = (
     Rule(LinkExtractor(allow=r'OEBPS'), follow=True),  # 1st rule 

     Rule(LinkExtractor(allow=r'\d\.xhtml$'), 
      callback='parse_item', follow=False),    # 2nd rule 
     Rule(LinkExtractor(allow=[r'2-jn.xhtml$', r'jude.xhtml$', r'obad.xhtml$', r'philem.xhtml$'],), 
      callback='parse_item', follow=False),    # 3rd rule 
    ) 

私は(2nd ruleをコメントアウト)1st rule3rd ruleを有効にした場合、私は全体のアイテム(約2000 itmes)正しく4つの不足している項目をダウンロードすることはできませんが。

しかし、3つのルールをすべて有効にすると、見つからないアイテムがまだ見つからないことがわかります。 (つまり、3rd ruleを追加しても差はありません)

なぜルールが機能しないのか分かりません。

どのようなご提案も歓迎いたします。前もって感謝します。

答えて

0

私は1st ruleにこれらの不足しているURLを拒否しなければならないことを理解しています。そのため、3rd ruleでは、重複した要求として除外されません。 これで正常にフェッチされます。

rules = (
    Rule(LinkExtractor(allow=r'OEBPS',deny=(r'2-jn.xhtml$', r'jude.xhtml$', 
     r'obad.xhtml$',r'philem.xhtml$')), follow=True), # 1st rule 

    Rule(LinkExtractor(allow=r'\d\.xhtml$'), 
     callback='parse_item', follow=False),    # 2nd rule 
    Rule(LinkExtractor(allow=[r'2-jn.xhtml$', r'jude.xhtml$', r'obad.xhtml$', r'philem.xhtml$'],), 
     callback='parse_item', follow=False),    # 3rd rule 
) 
関連する問題