2017-11-17 1 views
0

はここ20の開始URLがありますが、私のクモScrapyのみ擦り傷最初の4つの始まるURL

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) 

で、まだイムは最初の4つのURLが実際に呼び出されていると、残りがこれまでに実行されていないことに気付い。理想的な振る舞いは、まず最初に20のすべての開始URLを呼び出し、次にそれぞれのURLから次のURLに移動することです。

+0

コンソールで例外メッセージはありますか? clauses.txtファイルを提供できますか? –

+0

@XetRAFHan例外メッセージはありません。節ファイルには単語のリストがあり、それらはベースURLに追加され、サイトの作業に行きます。最初の4つの要求の後では、他の最初の要求を処理していません。 – TheM00s3

+0

'self.log(" start_urls - {} "。format(self.start_urls))の出力は何ですか?' 2つのURLはすべて表示されますか? – Umair

答えて

0

あなたがタイプミスを持っているように見える:

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

は、おそらく次のようになります。

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

start_urlsで行方不明sに注意してください。

そして、私はこれを疑う:

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

は次のようになります。

with open("clause/clauses.txt") as f: 
    for line in f: 
     start_urls.append(line) 
関連する問題