2013-02-14 33 views
7

Tôi đang cố gắng để xóa dữ liệu từ một trang web. Dữ liệu được cấu trúc dưới dạng nhiều đối tượng với mỗi tập hợp dữ liệu. Ví dụ: những người có tên, tuổi và nghề nghiệp.Cách thu thập dữ liệu từ nhiều trang vào một cấu trúc dữ liệu đơn lẻ với số liệu

Vấn đề của tôi là dữ liệu này được chia thành hai cấp trong trang web.
Trang đầu tiên là danh sách tên và độ tuổi có liên kết đến từng trang hồ sơ cá nhân.
Trang tiểu sử của họ liệt kê nghề nghiệp của họ.

Tôi đã có một con nhện được viết bằng cào trong python có thể thu thập dữ liệu từ lớp trên cùng và thu thập thông tin qua nhiều lần phân trang.
Nhưng, làm thế nào tôi có thể thu thập dữ liệu từ các trang bên trong trong khi vẫn giữ nó liên kết với đối tượng thích hợp?

Hiện nay, tôi đã đầu ra có cấu trúc với json như

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

Can chức năng phân tích tầm trên các trang như vậy?

Trả lời

8

đây là cách bạn cần giải quyết. bạn cần trả lãi/trả lại mặt hàng khi mặt hàng có tất cả các thuộc tính

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 
Các vấn đề liên quan