2013-02-14 6 views
7

サイトからデータを削り取ろうとしています。データは、それぞれデータセットを持つ複数のオブジェクトとして構成されています。 たとえば、名前、年齢、職業のある人。複数のページからデータを1つのデータ構造に集める方法

私の問題は、このデータがウェブサイトの2つのレベルに分かれていることです。
最初のページは、たとえば、各人物のプロフィールページへのリンクを持つ名前と年齢のリストです。
彼らのプロフィールページに職業が表示されます。

私はすでに、最上位層からデータを収集し、複数のページをクロールすることができるpythonでscrapyで書かれたスパイダーを持っています。
しかし、内部ページから適切なオブジェクトにリンクしたままデータを収集するにはどうすればよいですか?

現在、私は

{[name='name',age='age',occupation='occupation'], 
    [name='name',age='age',occupation='occupation']} etc 

としてJSONで構成出力はparse関数は、そのようなページに渡って到達することはできますか?

答えて

8

ここでは対処する必要があります。アイテムにすべての属性がある場合、アイテムを1回返す/返す必要があります

yield Request(page1, 
       callback=self.page1_data) 

def page1_data(self, response): 
    hxs = HtmlXPathSelector(response) 
    i = TestItem() 
    i['name']='name' 
    i['age']='age' 
    url_profile_page = 'url to the profile page' 

    yield Request(url_profile_page, 
        meta={'item':i}, 
    callback=self.profile_page) 


def profile_page(self,response): 
    hxs = HtmlXPathSelector(response) 
    old_item=response.request.meta['item'] 
    # parse other fileds 
    # assign them to old_item 

    yield old_item 
関連する問題