Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用HtmlAgilityPack解析网页并模拟单击_C#_Html Agility Pack - Fatal编程技术网

C# 使用HtmlAgilityPack解析网页并模拟单击

C# 使用HtmlAgilityPack解析网页并模拟单击,c#,html-agility-pack,C#,Html Agility Pack,我正在使用HAP抓取某个网页,我想访问该网页上的提交按钮,但问题是我不知道如何在HAP和C#中完成,有没有办法做到这一点?HTML Agility Pack不是浏览器,因此虽然它可以解析HTML文件,但没有办法真正与之交互。你可以找到submit对象,读取它的属性等等,但是你不能让它做任何事情 您有两个选择: 要么读取表单,构建一个与表单字段和post方法匹配的Http请求对象,然后将其发送到服务器。这都是体力劳动。Agility Pack仅帮助您列出表单上的字段及其属性 如果需要与页面交互,

我正在使用HAP抓取某个网页,我想访问该网页上的提交按钮,但问题是我不知道如何在HAP和C#中完成,有没有办法做到这一点?

HTML Agility Pack不是浏览器,因此虽然它可以解析HTML文件,但没有办法真正与之交互。你可以找到
submit
对象,读取它的属性等等,但是你不能让它做任何事情

您有两个选择:

  • 要么读取表单,构建一个与表单字段和post方法匹配的Http请求对象,然后将其发送到服务器。这都是体力劳动。Agility Pack仅帮助您列出表单上的字段及其属性

  • 如果需要与页面交互,则需要浏览器。有一些无头浏览器,比如PhantomJS,它们将实际加载页面、解析Javascript并运行服务器发送的内容。C#的包装周围有包装纸,C#是其中之一。它与HTMLAgility包类似,它允许您解析HTML文档,但它更进一步,实际上运行它时不会显示浏览器屏幕


HTML Agility Pack不是浏览器,因此虽然它可以解析HTML文件,但无法真正与之交互。你可以找到
submit
对象,读取它的属性等等,但是你不能让它做任何事情

您有两个选择:

  • 要么读取表单,构建一个与表单字段和post方法匹配的Http请求对象,然后将其发送到服务器。这都是体力劳动。Agility Pack仅帮助您列出表单上的字段及其属性

  • 如果需要与页面交互,则需要浏览器。有一些无头浏览器,比如PhantomJS,它们将实际加载页面、解析Javascript并运行服务器发送的内容。C#的包装周围有包装纸,C#是其中之一。它与HTMLAgility包类似,它允许您解析HTML文档,但它更进一步,实际上运行它时不会显示浏览器屏幕


根据我的经验,目前无法使用HAP完成。根据我的经验,目前无法使用HAP完成。>构建一个与我同意Jesse的表单字段相匹配的Http请求对象。您可以使用Fiddler在一个真正的基于浏览器的会话中记录计算机和服务器之间的HTML交换,在该会话中,您可以实际单击“提交”按钮,查看发送回服务器的内容。这有助于通过C#更容易地模拟这种交换。当然,如果服务器生成防伪票证,这可能会失败,这意味着您不能总是重新提交相同的值(除了一些您可能已经更改的值)。这让冬虫夏草变得棒极了!>构建一个与我同意Jesse的表单字段匹配的Http请求对象。您可以使用Fiddler在一个真正的基于浏览器的会话中记录计算机和服务器之间的HTML交换,在该会话中,您可以实际单击“提交”按钮,查看发送回服务器的内容。这有助于通过C#更容易地模拟这种交换。当然,如果服务器生成防伪票证,这可能会失败,这意味着您不能总是重新提交相同的值(除了一些您可能已经更改的值)。这让冬虫夏草棒极了!