2017-11-17 7 views
0

Hier sind meine SpinneScrapy nur Schrammen erster 4 Start Urls

class Spider(scrapy.Spider): 
    name = "spider" 
    start_urls = [] 
    with open("clause/clauses.txt") as f: 
     for line in f: 
      start_urls(line) 
    base_url = "<url>" 
    start_urls = [base_url + "-".join(url.split()) for url in start_url] 

    def start_requests(self): 
     self.log("start_urls - {}".format(self.start_urls)) 
     for url in self.start_urls: 
      yield scrapy.Request(url, dont_filter=True, priority=2, callback=self.parse) 

    def parse(self, response): 
     text_items = response.css("some css").extract() 

     for text in text_items: 
      if text == "\n": 
       continue 
      yield Item({"text" : text}) 

     yield response.follow(response.css("a::attr(href)").extract_first(), callback=self.parse) 

gibt es 20 Start Urls, aber Im zu bemerken, dass nur die ersten 4 Urls sind tatsächlich und der Rest ist nicht immer ausgeführt aufgerufen werden. Das ideale Verhalten wäre für Scrappy, zuerst alle 20 Start-URLs aufzurufen und dann von jedem zum nächsten weiterzugehen.

+0

Gibt es eine Ausnahmemeldung in der Konsole? Können Sie Ihre Datei "clauses.txt" bereitstellen? –

+0

@XetrAFHan gibt es keine Ausnahmemeldungen. Die Klauseldatei hat eine Liste von Wörtern und diese werden an die Basis-URL angehängt, wobei die Site funktioniert, nur dass nach den ersten 4 Anfragen die anderen anfänglichen Anfragen nicht verarbeitet werden. – TheM00s3

+0

Was ist die Ausgabe von 'self.log (" start_urls - {} ". Format (self.start_urls))' Siehst du alle 2 URLs? – Umair

Antwort

0

Sieht aus wie Sie einen Tippfehler haben:

start_urls = [base_url + "-".join(url.split()) for url in start_url] 

sollte wohl sein:

start_urls = [base_url + "-".join(url.split()) for url in start_urls] 

Beachten Sie die s in start_urls fehlt.

Und ich vermute, dies:

with open("clause/clauses.txt") as f: 
    for line in f: 
     start_urls(line) 

sein sollte:

with open("clause/clauses.txt") as f: 
    for line in f: 
     start_urls.append(line)