C# 网页抓取隐藏的html输入标记

C# 网页抓取隐藏的html输入标记,c#,web-scraping,C#,Web Scraping,我正在使用c#winforms和工具箱中的WebBrowser控件来例行导航到url并获取其数据。我已经绑定了事件webbrowser_documentcomplete事件,并且在事件中使用了该行 HtmlElement element= WebBrowser.Document.GetElementById("MainRadGrid_ClientState"); 获取元素。一旦我有了HtmleElement,我就能够使用OuterText属性来查看元素中的内容 element.OuterT

我正在使用c#winforms和工具箱中的WebBrowser控件来例行导航到url并获取其数据。我已经绑定了事件webbrowser_documentcomplete事件,并且在事件中使用了该行

 HtmlElement element= WebBrowser.Document.GetElementById("MainRadGrid_ClientState"); 
获取元素。一旦我有了HtmleElement,我就能够使用OuterText属性来查看元素中的内容

element.OuterText.Trim()
我的问题是,即使当我正在查看的输入类型被设置为“隐藏”时,上面的代码仍然有效。在这一点上,情况似乎发生了变化,我不再能够获得outertext值。有人能帮我获取元素的outertext吗,或者直接进入隐藏元素获取其数据

<input id="MainRadGrid_ClientState" name="MainRadGrid_ClientState" type="hidden" /> </div>



您没有指定具体的抓取方式,但一般来说,您的问题的答案应该是响亮的“是”。如果您正在抓取web内容,则意味着您正在下载web服务器发送到任何浏览器的相同内容(HTML源等)。在你的刮刀中,你不需要尊重“隐藏”风格或任何类似的东西。对于代码来说,它只是一个非常大的字符串或一系列字符串。您可以按自己认为合适的方式解析它们。

可能会有困难,这取决于页面作者的技巧

输入类型class='hidden'是一回事,但是可能还有其他字段是用CSS样式直观隐藏的,或者只是定位在屏幕之外。最后,在页面提交的最后一秒可能会有一些值,因此您必须深入思考您想要的值。此外,在加载页面后,某些字段可能会被打开、生成或删除,从而使简单的抓取页面抓取无法进行


但是对于隐藏类型的输入标记,XSLT搜索可以很快得到这些节点的列表

对于堆栈溢出来说,这是一个过于宽泛的问题。我已经使用c#和WebBrowser.Document.GetElementById(“”)创建了一个web刮板来获取元素。当我得到元素时,我正在查看HtmleElement Outertext,我看到了网格中显示的内容。突然间,事情发生了变化,我再也不能从外面得到任何东西了。有什么建议吗