如何抓取无限滚动页面?

时间:2012-10-21 09:00:33

标签: javascript ruby web-crawler

我正在尝试使用无限滚动来构建从页面抓取内容的内容。但是,我无法从第一个'休息'下面得到这些东西。我该怎么做?

3 个答案:

答案 0 :(得分:7)

无限滚动几乎总是使用AJAX或相关技术在JavaScript中完成。因此,您的网络抓取工具获取HTML并解析它是不够的;它必须下载并执行javascript,或至少扫描它以进行AJAX调用。

执行完整的javascript执行可能最好(即,最有效保证),但可能是最难做到的。

扫描javascript以获取AJAX请求和/或查找执行AJAX调用的函数然后执行DOM操作可能是最简单的(相对于完整的JS执行)

答案 1 :(得分:3)

这个答案应该与大部分无限卷轴相关,显然你的milage可能会有所不同。

大多数无限滚动条使用偏移位置工作,只需从偏移量中抓取下一个项目块。这与通过单步执行

的分页工作方式完全相同

< Previous 1 2 3 4 5 Next >,但偏移量已存储并用于发出新请求。

考虑到这一点,如果您在Chrome或Firefox中打开开发人员工具栏并查看网络标签,您很可能会在向下滚动时看到请求。

查看请求中的参数,您很可能会看到类似

的内容
GET /api/v2/books?offset=100=count=10
GET /api/v2/books?offset=110=count=10
GET /api/v2/books?offset=120=count=10

了解这一点,您可以非常轻松地忽略实际抓取目标HTML,并使用其内部目标URI来发出请求。

答案 2 :(得分:0)

ajax请求与任何其他请求没有区别。您只需提出请求,解析结果,然后就可以获得数据。

如果您之前没有这样做,可能需要一些经验,但这听起来像是一次很好的学习经历。