Selenium aspx 结果

Selenium aspx results

提问人:Eternity Tomorrow 提问时间:1/25/2020 更新时间:1/28/2020 访问量:441

问:

我是硒的新手,所以如果问题没有很好地形成,我深表歉意。 我正在考虑自动化一些数据收集。有一个 ASP.NET 站点,您可以在其中请求有关特定主题的数据。数据查询完成后,网页将使用结果进行更新。当我使用硒来获取page_source时,我看不到数据。我相信它是在__VIEWSTATE中编码的。使用 IE DOM 资源管理器,数据以纯文本形式存在。

有没有办法从 DOM 资源管理器中提取数据?基本上,我很乐意得到一个转储并自己解析它。

任何帮助将不胜感激。

Selenium Internet-Explorer DOM 视图状态

评论

0赞 David 1/25/2020
当您查看页面源代码时,“视图状态”不就是一个?如果这是你要找的价值,你不会像 Selenium 中的任何其他价值一样得到它吗?你尝试过什么,什么不起作用?<input type="hidden"><input>
0赞 David 1/26/2020
如果数据不在初始页面源中,而是在浏览器中显示的结果中,则听起来像是动态添加的。它可能位于页面源代码的其他地方并通过代码重新格式化,它可能位于 JavaScript 中,也可能位于单独的 AJAX 调用中,等等。您需要对尝试从中抓取数据的页面进行逆向工程。在浏览器的调试工具中,它是否进行其他 HTTP 调用?这些调用中是否有任何包含数据?它是否引用了其他资源?其中是否有任何包含数据?
0赞 Eternity Tomorrow 1/26/2020
我在表格上提交了请求,要求取回一些客户信息。我愿意。我所期望的是,客户数据在page_source中。这样我就可以解析 HTML 并提取客户端数据。但它不在那里。然后我去 IE 并按 f12。那里有多个选项卡,“DOM Explorer”、“DEBUG”等。当我查看 DOM 资源管理器时,它包含所有客户端数据。但是,当我查看“DEBUG”选项卡时,我看到的是我在 page_source 中返回的数据,其中包含多个__VIEWSTATE条目,但我无法以明文形式看到实际的客户端数据。driver.page_source
0赞 David 1/26/2020
这意味着数据不在初始页面源中,而是来自其他地方。你必须找到哪里。对网页进行逆向工程并不总是一件容易的事,它们可以具有高度动态的功能。我的猜测是,数据可能是从页面发出的 AJAX 请求中获取的,或者是在页面使用的另一个文件中引用的。加载页面时,需要检查在浏览器的调试工具中发出的其他网络请求。
0赞 Eternity Tomorrow 1/26/2020
对不起,我是网络技术的新手。我确实看到一堆 Java 脚本调用。我目前无法访问该系统,因此我无法深入研究它。但是当你说数据是动态添加的。您的意思是有进一步的服务器调用来获取数据。但是,客户端数据已经显示在屏幕上,这难道不意味着它已经被提取了吗?你是说我需要重新获取数据吗?(对不起,如果这些是菜鸟问题)

答:

0赞 Eternity Tomorrow 1/28/2020 #1

我想我想通了。感谢您的所有输入。我从中得到了答案:通过 Selenium 抓取动态内容?

我最终做的是首先获取页面上的 iframe 列表

driver.find_elements_by_tag_name("iframe")

然后一次切换到每个 iframe。就我而言,第一个 iframe 是具有相关信息的 iframe:

driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])

一旦我进入相关框架,我就可以做:

html = driver.page_source

这将给我带来预期的结果。

框架上下文似乎很重要。一旦你进入框架上下文,你就可以抓取数据。