C# 使用HtmlAlityPack或WebRequest设置HTML选项
我有一个从网站上提取的表格,但默认情况下,选项设置为仅显示过去7天的历史记录。在网站上,有一个通过组合框显示所有条目的选项。如何通过WebRequest连接并检索所有数据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-
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请求,然后您可以根据自己的喜好调整参数。谢谢你的帮助。坦佩尔给了我需要的信息。