ajax - 使用 selenium 和 C# 抓取 Angular 网站会返回 Angular 脚本,而不是呈现的网页
问题描述
据我所知,这似乎是设计使然。Selenium 可以看到最初加载的 HTML,但不能看到经过按摩后的 HTML。我尝试过 IE、Chrome 和 PhantomJS,它们都表现出相同的行为。内置的 Chrome 调试器也是如此,在您检查页面上的元素之前,您无法查询任何呈现的 HTML。
我正在寻找有关如何抓取网页的任何建议。我现在看到的唯一选择是找到 chrome 进程,触发检查器,单击内部,然后运行 Javascript。不用说,这听起来很脆弱。
我也找不到任何关于从 selenium 捕获 Ajax 调用的信息,因此我可以制作它们并捕获 JSON。当尝试从 chrome 网络选项卡复制/粘贴到 selenium 时,我收到一条缺少应用程序阻止消息。
有人有其他建议吗?
由于我可以在 chrome 调试器中复制该问题,因此我认为发布代码没有用处。这看起来像是一个设计决定。
拉尔夫
解决方案
可悲的是,我无法以直截了当的方式做事。相反,我使用 Selenium 进行登录并导航到页面,然后使用 windows API 调用在窗口内单击发送 ^a^c 以复制数据,并使用绝对位置单击按钮以转到下一页。
该站点的设置使得 ^a^c 复制该站点的原始数据。我不知道这是否是 Angular 的标准。
脆弱,但它有效。
推荐阅读
- android - Jetpack 撰写仅粗体字符串占位符
- r - R未显示在终端中
- c# - 如何停止 Visual Studio 2022 向 dc.services.visualstudio.com 发送请求
- tensorflow - 为 BiLSTM 提供合适掩码的正确方法
- python - Python datetime - 修复 18 小时的一天
- javascript - 交互通道消息 (Discord.js v13)
- docker - 如何使用 Azure Pipeline 将 Docker 映像“推送”到 Azure 容器注册表?
- java - Java 无法解析符号“地图”
- html - 使用纯 CSS 创建一个显示焦点的下拉菜单
- android - 如何正确使用 StateFlow 和 Jetpack compose?