2017-04-09 5 views
0

In meiner Scrapy-Ausgabedatei, fand ich, dass einige Elemente fehlen, so dass ich manuell diese fehlende Seite als dritte Regel hinzufügen.Hinzugefügt Scrapy Regeln, aber nicht geschabt mehr Artikel

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 
    ) 

Wenn ich damit 1st rule und 3rd rule (kommentieren Sie die 2nd rule), kann ich die vier fehlenden Elemente richtig herunterladen, aber nicht der ganze Artikel (etwa 2000 itmes).

Aber wenn ich alle drei Regeln aktiviere, stellt sich heraus, dass die fehlenden Elemente immer noch fehlen. (d. h. Es gibt keinen Unterschied, wenn ich die 3rd rule hinzufüge.)

Ich weiß nicht, warum die Regeln nicht funktionieren.

Alle Vorschläge sind willkommen. Danke im Voraus.

Antwort

0

Ich finde heraus, dass ich diese fehlenden URLs in der 1st rule verweigern muss, so dass in der 3rd rule, wird es nicht als doppelte Anfragen herausgefiltert werden. So wird es normalerweise holen.

z.B.

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 
) 
Verwandte Themen