9

サイトからデータをスクレイピングしようとしています。データは、それぞれが一連のデータを持つ複数のオブジェクトとして構造化されています。たとえば、名前、年齢、職業を持つ人。

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

私はすでに、トップレイヤーからデータを収集し、複数のページネーションをクロールできるPythonのスクレイピーで書かれたスパイダーを持っています。
しかし、適切なオブジェクトへのリンクを維持しながら、内部ページからデータを収集するにはどうすればよいでしょうか?

現在、jsonで構造化された出力があります

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

解析機能はそのようにページをまたいで到達できますか?

4

1 に答える 1

8

ここに対処する必要がある方法があります。アイテムがすべての属性を持っている場合、アイテムを一度譲る/返す必要があります

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
于 2013-02-14T09:11:23.407 に答える