5

我正在尝试构建一些可以从无限滚动页面中抓取内容的东西。但是,我无法从第一个“休息”下方获得这些东西。我该怎么做呢?

4

3 回答 3

7

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

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

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

于 2012-10-21T09:09:01.573 回答
3

这个答案应该与大部分无限滚动器相关,显然你的里程可能会有所不同。

大多数无限滚动条通过使用偏移位置来工作,并且只是从偏移处抓取下一个项目块。这与分页的工作方式完全相同

< 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 来发出您的请求。

于 2012-10-21T22:55:02.570 回答
0

ajax 请求与任何其他请求没有什么不同。您只需发出请求,解析结果,然后就可以获得数据。

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

于 2012-10-21T09:56:15.563 回答