C# <;表单操作="/&引用&燃气轮机;并制定出刮网参数

C# <;表单操作="/&引用&燃气轮机;并制定出刮网参数,c#,forms,web,action,screen-scraping,C#,Forms,Web,Action,Screen Scraping,我正试图用C#从一个简单的表单中进行一些web抓取 我的问题是试图找出要发布到的操作以及如何计算post参数 我尝试提交的表单包含: <form method="post" action="./" 但是,创建的结果html页面不显示搜索结果,而是显示初始搜索表单 我认为这个职位失败了。我的问题围绕着我正在写的帖子 action=“./”是否意味着它将发回同一页面 我是否需要提交所有表单值(或者只提交一个或两个就可以了) 有没有办法从表单中推断出正确的post参数名称 还是我完全忽略了服务

我正试图用C#从一个简单的表单中进行一些web抓取

我的问题是试图找出要发布到的操作以及如何计算post参数

我尝试提交的表单包含:

<form method="post" action="./"
但是,创建的结果html页面不显示搜索结果,而是显示初始搜索表单

我认为这个职位失败了。我的问题围绕着我正在写的帖子

action=“./”是否意味着它将发回同一页面

我是否需要提交所有表单值(或者只提交一个或两个就可以了)

有没有办法从表单中推断出正确的post参数名称


还是我完全忽略了服务器端代码中的web抓取和提交表单的功能?

我建议不要手动完成所有这些工作,而是让您的计算机承担一点工作量。您可以使用和等工具以编程方式生成用于复制web请求的C#代码。然后,您可以修改它以获取您可能需要的任何动态输入


如果这不是您希望采取的路线,您应该确保您正在使用正确的cookies(如果适用)请求此数据,并且您正在提供所有POST数据,无论它看起来多么卑微。

我建议您不要手动执行所有这些工作,但让你的电脑承担一点工作量。您可以使用和等工具以编程方式生成用于复制web请求的C#代码。然后,您可以修改它以获取您可能需要的任何动态输入


如果这不是您希望采用的方法,您应该确保您使用正确的cookies(如果适用)请求此数据,并且您提供的是所有POST数据,无论它看起来多么卑微。

使用类似Fiddler的工具帮助调试此问题是一个很好的建议。我不同意你所说的所有post数据都是必需的。这实际上取决于接收post请求的代码。另一方面,最好从一切开始,以减少失败的可能性。我知道并非总是需要所有POST数据,但在调试时,通常最好将所有数据都放在那里,这样您就可以确定这不是错误点。:)@ext0-谢谢你的建议。我希望能够提交所有post数据,我只是不确定提交整个数据的参数名称。我必须安装Fiddler吗?或者是否有chrome插件或类似的插件可以显示我可以复制的帖子数据?(半修辞性的,我正在搜索,只是想寻求建议)等等,我可以在Chrome的开发工具中看到网络中的表单数据。我想那可能行得通。但如果不是这样的话,他们将求助于小提琴手。感谢您建议使用类似Fiddler的工具来帮助调试问题。我不同意你所说的所有post数据都是必需的。这实际上取决于接收post请求的代码。另一方面,最好从一切开始,以减少失败的可能性。我知道并非总是需要所有POST数据,但在调试时,通常最好将所有数据都放在那里,这样您就可以确定这不是错误点。:)@ext0-谢谢你的建议。我希望能够提交所有post数据,我只是不确定提交整个数据的参数名称。我必须安装Fiddler吗?或者是否有chrome插件或类似的插件可以显示我可以复制的帖子数据?(半修辞性的,我正在搜索,只是想寻求建议)等等,我可以在Chrome的开发工具中看到网络中的表单数据。我想那可能行得通。但如果不是这样的话,他们将求助于小提琴手。ThanksAction=“./”指当前文件夹中的默认页面。因此,如果页面是“www.foobar.com/search.html”,那么帖子将转到“www.foobar.com/”。如果页面为“www.foobar.com/search/index.html”,则帖子将转到“www.foobar.com/search/”。Action=“./”指当前文件夹中的默认页面。因此,如果页面是“www.foobar.com/search.html”,那么帖子将转到“www.foobar.com/”。如果页面为“www.foobar.com/search/index.html”,则帖子将转到“www.foobar.com/search/”。
<input name="ctl00$MainContent$txtSearchName" type="text" maxlength="8" id="MainContent_txtSearchName" class="input-large input-upper">
        var httpRequest = WebRequest.Create("https://www.foobar.com/");
        var values = "SearchName=Foo&SearchLastName=Bar";

        byte[] send = Encoding.Default.GetBytes(values);
        httpRequest.Method = "POST";
        httpRequest.ContentType = "application/x-www-form-urlencoded";
        httpRequest.ContentLength = send.Length;

        Stream sout = httpRequest.GetRequestStream();
        sout.Write(send, 0, send.Length);
        sout.Flush();
        sout.Close();

        WebResponse res = httpRequest.GetResponse();
        StreamReader sr = new StreamReader(res.GetResponseStream());
        string returnvalue = sr.ReadToEnd();

        File.WriteAllText(@"C:\src\test.html", returnvalue);