2017-08-29 1 views
0

同じドメインのいくつかのページを擦っていますが、の異なる構造が治療中です。同じドメイン内の異なる構造の複数のページをスクラップでスクレイプする最も良い方法はありますか?

http://example.com/page1 
http://example.com/page2 
http://example.com/page3 

この回答が見つかりました。 (渡す引数は私にとって理解しやすい)

Scrapy multiple requests and fill single item

def start_requests(self): #This refers scrapy tutrials 
     urls = [ 
      'http://example.com/page1', 
     ] 
     for url in urls: 
      yield scrapy.Request(url=url, callback=self.parse) 

def parse(self, response): 
    data_page1 = response.xpath("//body") 
    yield scrapy.Request('http://example.com/page2', self.parse2, 
        meta={'data_page1': data_page1}) 

def parse2(self, response): 
    data_page2 = response.xpath("//body") 
    yield scrapy.Request('http://example.com/page3', self.parse3, 
        meta={'data_page1': data_page1,'data_page2': data_page2}) 

def parse3(self, response): 
    data_page3 = response.xpath("//body") 
    yield { 
     'data_page1' : response.meta['data_page1'], 
     'data_page2' : response.meta['data_page2'], 
     'data_page3' : data_page3 
    } 

しかし、私は、これは良いコードではないと思います...

は、より効率的に複数のページをこすり最良の方法はありますか?

ありがとうございました!

答えて

2

まあ、私はこのコードが悪いとは限りませんし、この方法を常に使用しています。結局、複数のページからデータを収集するための推奨方法として、FAQに記載されています。したがって、実際に複数のページからデータを集めて1つのアイテムとして取得する必要がある場合、このアプローチは完全に有効です。

+1

ありがとうございました!私はそれを聞いて安心しています! –

関連する問題