抓取动态数据
Scraping dynamic data
我正在 ask.fm 上抓取研究问题的个人资料。问题是只有最新的问题可以查看,我必须单击"查看更多"才能看到接下来的 15 个问题。
单击查看更多内容的源代码如下所示:
<input class="submit-button-more submit-button-more-active" name="commit" onclick="return Forms.More.allowSubmit(this)" type="submit" value="View more" />
在刮擦之前调用 4 次的简单方法是什么。我想要网站上最近的 60 个帖子。Python更可取。
不使用无头浏览器
- 打开 chrome 调试器工具 -> 网络选项卡。
- 现在点击 查看更多 按钮。 单击
- "查看更多"时,检查"网络"对话框中正在触发的请求。
- 在大多数情况下,数据将从外部 API 加载,因此请检查对 API 的请求是获取请求还是后请求以及来自它的响应类型。
- 可以向该 url 传递限制或任何类似的查询参数,以限制响应对象的数量。在您的情况下,它将是 15。
- 尝试从脚本向同一 URL 发出请求,将限制增加到 60,并检查响应。
- 上述技术在大多数情况下都有效。但是,如果这对您不起作用,请尝试以下步骤。
使用无头浏览器
-
尝试使用加载动态内容的无头浏览器,您可以使用向下滚动,单击等可用的方法。
-
无头浏览器的例子是Selenium,Splash,PhantomJS,SlimmerJS等。
您可能可以使用硒浏览到网站并点击按钮/链接几次。你可以在这里得到它:
- https://pypi.python.org/pypi/selenium
或者你可以用机械化来做到这一点:
- http://wwwsearch.sourceforge.net/mechanize/
我也听说过斜纹布的好东西,但自己从来没有用过:
- http://twill.idyll.org/
相关文章:
- 下载使用POST数据动态生成的文件
- 使用enyo.js将数据动态插入表中
- (Laravel)使用数据库中的数据动态打开模态
- 如何根据数据动态创建引导下拉列表
- 将json数据动态加载到D3节点中
- 如何在 React 中将 html 表单元格数据动态插入到具有动态标题的表中
- 使用数据库返回的数据动态填充下拉列表
- 从 JSON 数据动态创建 Jquery 移动导航栏
- 将数据动态发送到服务器
- 如何通过角度 ui-grid 中来自$scope的数据动态设置指令
- 如何在 ASP.NET 中将数据动态追加到 JQuery 控件变量
- 用于流程图的 JavaScript 绘图库,并将数据动态附加到视图
- 使用Angular ng-repeat将数据动态加载到materializecss滑块中不起作用
- 在 Laravel 5.1 和 Vue JS 中保存多个数据动态表单
- 当没有提供json数据的结构/字段名称时,将json数据动态显示为表
- 如何使用entityframwork和sql数据动态显示jqgrid数据
- Javascript:如何从字符串数据动态构建方法
- Javascript:将数据动态添加到数组中
- Ember数据动态模型未加载到存储中
- 使用JSON URL数据动态填充HTML表