Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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# 使用HtmlAlityPack或WebRequest设置HTML选项_C#_Html Agility Pack_Webrequest - Fatal编程技术网

C# 使用HtmlAlityPack或WebRequest设置HTML选项

C# 使用HtmlAlityPack或WebRequest设置HTML选项,c#,html-agility-pack,webrequest,C#,Html Agility Pack,Webrequest,我有一个从网站上提取的表格,但默认情况下,选项设置为仅显示过去7天的历史记录。在网站上,有一个通过组合框显示所有条目的选项。如何通过WebRequest连接并检索所有数据 var doc = new HtmlDocument(); doc.LoadHtml(html); var data = doc.DocumentNode.SelectNodes("//table/tbody/tr"); 在网站上: <select id="date-switcher" class="contest-

我有一个从网站上提取的表格,但默认情况下,选项设置为仅显示过去7天的历史记录。在网站上,有一个通过组合框显示所有条目的选项。如何通过WebRequest连接并检索所有数据

var doc = new HtmlDocument();
doc.LoadHtml(html);

var data = doc.DocumentNode.SelectNodes("//table/tbody/tr");
在网站上:

<select id="date-switcher" class="contest-reload-filter">

<option value="3"> … </option>
<option selected="selected" value="7"> … </option>
<option value="30"> … </option>
<option value="-1"> … </option>

</select>

我以前从未做过这样的事情,所以我很迷茫。

正如@June Paik所说,你应该在浏览器Firefox Firebug o ChromeDevTools的开发工具中检查站点发送的参数,以及请求POST/GET的类型。接下来,您可以使用WebClient.UploadValues/UploadString方法模拟表单发送,如下所示:

        using (var webClient = new WebClient())
        {
            NameValueCollection parameters = HttpUtility.ParseQueryString(String.Empty, Encoding.ASCII);
            Uri formAddress = new Uri("Your address here!");
            webClient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
            webClient.Headers[HttpRequestHeader.Accept] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            webClient.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.2 Safari/537.13";

            parameters["q"] = "http://www.google.com/";
            //Add as many parameters as you detected the request send.

            var response = webClient.UploadString(formAddress, "POST", parameters.ToString());

也许,如果您解释您的请求提交到哪个网站,我可以帮助您。

您应该尝试在该网站上选择不同于7的值时,找出post参数。然后您可以在WebRequest中传递post数据。有一个叫做Tamper Data的FireFox插件,它使您能够找到确切的post请求,然后您可以根据自己的喜好调整参数。谢谢你的帮助。坦佩尔给了我需要的信息。