首页 > 解决方案 > 使用 selenium 和 C# 抓取 Angular 网站会返回 Angular 脚本,而不是呈现的网页

问题描述

据我所知,这似乎是设计使然。Selenium 可以看到最初加载的 HTML,但不能看到经过按摩后的 HTML。我尝试过 IE、Chrome 和 PhantomJS,它们都表现出相同的行为。内置的 Chrome 调试器也是如此,在您检查页面上的元素之前,您无法查询任何呈现的 HTML。

我正在寻找有关如何抓取网页的任何建议。我现在看到的唯一选择是找到 chrome 进程,触发检查器,单击内部,然后运行 ​​Javascript。不用说,这听起来很脆弱。

我也找不到任何关于从 selenium 捕获 Ajax 调用的信息,因此我可以制作它们并捕获 JSON。当尝试从 chrome 网络选项卡复制/粘贴到 selenium 时,我收到一条缺少应用程序阻止消息。

有人有其他建议吗?

由于我可以在 chrome 调试器中复制该问题,因此我认为发布代码没有用处。这看起来像是一个设计决定。

拉尔夫

标签: ajaxangularselenium

解决方案


可悲的是,我无法以直截了当的方式做事。相反,我使用 Selenium 进行登录并导航到页面,然后使用 windows API 调用在窗口内单击发送 ^a^c 以复制数据,并使用绝对位置单击按钮以转到下一页。

该站点的设置使得 ^a^c 复制该站点的原始数据。我不知道这是否是 Angular 的标准。

脆弱,但它有效。


推荐阅读