【发布时间】:2020-01-25 12:15:57
【问题描述】:
我是 selenium 的新手,如果问题没有很好地形成,请道歉。 我正在研究自动化一些数据收集。有一个 ASP.NET 站点,您可以在其中请求有关特定主题的数据。当数据查询完成时,网页将更新结果。当我使用 selenium 获取 page_source 时,我看不到数据。我相信它是在 __VIEWSTATE 中编码的。使用 IE DOM Explorer,数据以纯文本形式存在。
有没有办法从 DOM Explorer 中提取数据?基本上,我很乐意得到一个转储并自己解析它。
任何帮助将不胜感激。
【问题讨论】:
-
查看页面源码时,“查看状态”不就是一个
<input type="hidden">吗?如果这是您正在寻找的值,您不会像 Selenium 中的任何其他<input>值一样得到它吗?您尝试了哪些方法,哪些方法无效? -
如果数据不在初始页面源中,但在浏览器显示的结果中,则听起来像是动态添加的。它可能位于页面源中的其他位置并由代码重新格式化,可能位于 JavaScript 中,也可能位于单独的 AJAX 调用中,等等。您需要对尝试从中抓取数据的页面进行反向工程.在浏览器的调试工具中,它是否会进行额外的 HTTP 调用?这些调用中的任何一个都包含数据吗?它是否引用其他资源?其中是否包含数据?
-
我在表单上提交了一个请求,以获取一些客户信息。我做
driver.page_source。我所期待的是客户端数据在 page_source 中。这样我就可以解析 HTML 并提取客户端数据。但它不存在。所以然后我去IE并按f12。那里有多个选项卡,“DOM Explorer”、“DEBUG”等。当我查看 DOM Explorer 时,它包含所有客户端数据。但是,当我查看“调试”选项卡时,我看到了我在 page_source 中返回的数据,其中有多个 __VIEWSTATE 条目,但我看不到明文形式的实际客户端数据。 -
这意味着数据不在初始页面源中,它来自其他地方。你必须找到在哪里。对网页进行逆向工程并不总是一件容易的事,它们可以具有高度动态的功能。我的猜测是数据可能是从页面发出的 AJAX 请求中获取的,或者在页面使用的另一个文件中引用。加载页面时,您需要检查浏览器调试工具中发出的额外网络请求。
-
抱歉,刚接触网络技术。我确实看到了一堆 Java 脚本调用。我目前无法访问该系统,因此无法深入研究。但是当你说数据是动态添加的。你的意思是还有更多的服务器调用来获取数据。但是,客户端数据已经显示在屏幕上,那不就意味着它已经被获取了吗?你是说我需要重新获取数据吗? (对不起,如果这些是菜鸟问题)
标签: selenium internet-explorer dom viewstate