ASP.NET Agility Pack |如何解析网页。那是采取后期参数?

时间:2010-11-12 06:24:46

标签: c# .net asp.net html-agility-pack

我想解析和接受POST参数的页面。这是我的情景。我必须解析一些搜索结果。但搜索参数在帖子正文中发送到该页面。

要解析搜索结果,我必须在POST中将参数发送到该页面。我怎么能用敏捷包来做到这一点?

请帮帮我。

3 个答案:

答案 0 :(得分:2)

是的,您可以使用HTML Agility Pack发布参数。看看下面的代码。

BrowserSession b = new BrowserSession();
b.Get("http://www.skyline-eng.com/");
b.FormElements["navigationTypeID"] = rblCategory.SelectedItem.Value;
b.FormElements["navigationSeriesID"] = boxItem.Value;
HtmlDocument docSkyLine = b.Post("http://www.skyline-eng.com/");

这里的navigationTypeID和navigationSeriesID是post参数。像这样使用并使用伟大的工具HTMLAgility Pack继续解析数据。

答案 1 :(得分:0)

我认为这不是HTML敏捷包的用途。它不是HTTP敏捷包,它不解析任何HTTP请求。它只解析HTML输出(即响应,而不是请求)。

您可以使用该页面后面的代码中的Page.Request[<param>]字典访问页面收到的POST参数。

如果那不是你想要做的,你能澄清一下吗?

答案 2 :(得分:0)

使用WebClient使帖子发送搜索页面所需的参数。使用Html Agility包可以解析返回的html。

WebClient将具有搜索页面结果返回的html。

这样的事情:

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://exposureroom.com");
  request.Method = "POST";
  request.ContentType = "application/x-www-form-urlencoded";
  string formParameters = "name1=value1&name1=value2";
  byte[] requestBuffer = Encoding.ASCII.GetBytes(formParameters);
  var requestStream = request.GetRequestStream();
  requestStream.Write(requestBuffer, 0, requestBuffer.Length);
  HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  StreamReader reader = new StreamReader(response.GetResponseStream());
  string str = reader.ReadToEnd();

在您的情况下,字符串变量formparameters需要包含搜索页面所需的查询参数。然后,这些参数将以“POST”Http方法的形式发送到您的搜索页面。当然,网址也应该更改为您的网址。