我正在尝试使用无限滚动来构建从页面抓取内容的内容。但是,我无法从第一个'休息'下面得到这些东西。我该怎么做?
答案 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请求与任何其他请求没有区别。您只需提出请求,解析结果,然后就可以获得数据。
如果您之前没有这样做,可能需要一些经验,但这听起来像是一次很好的学习经历。