python - 如何使用 scrapy 将多个页面的数据收集到单个数据结构中

标签 python json scrapy web-crawler

我正在尝试从站点抓取数据。数据的结构是多个对象,每个对象都有一组数据。 例如,有姓名、年龄和职业的人。

我的问题是这些数据在网站中分为两个级别。
第一页是,比如说,一个姓名和年龄列表,带有指向每个人个人资料页面的链接。
他们的个人资料页面列出了他们的职业。

我已经有一个用 python 编写的 scrapy 蜘蛛,它可以从顶层收集数据并通过多个分页爬行。
但是,我如何从内页收集数据,同时保持它链接到合适的对象?

目前,我将输出结构化为 json

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

parse 函数可以像这样跨页吗?

最佳答案

这是您需要处理的方式。当项目具有所有属性时,您需要产生/返回项目一次

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

关于python - 如何使用 scrapy 将多个页面的数据收集到单个数据结构中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870694/

相关文章:

javascript - 如何在html元素的json中插入日期

c - 使用 c 中的 libcurl 将地理编码的 json 响应保存在 json 文件中

javascript - 我想让 jquery 使用 ajax 更新复选框

python - 从 Flask 运行 Scrapy

python-2.7 - 在 Scrapy 机器人中,我无法增加全局变量(但可以分配相同的变量)。为什么?

python - Scrapy RetryMiddleWare 向蜘蛛发送信号

python - Pandas 系列 : compare values all vs. 所有

python - 如果 RDC 最小化,Sikuli 脚本不会运行

python - 使用 pandas 中现有数据框的 group 的简单组合创建 df

python - Git:按 merge 顺序提交