在post方法响应后从网站解析表

时间:2012-06-09 08:37:15

标签: c# parsing httpwebrequest

我想解析单击搜索按钮后出现的表格,然后过滤一些数据。我怎么能这样做?

该网站为ruspo.ru

我的代码是:

HttpWebRequest webRequest = WebRequest.Create("http://ruspo.ru/") as HttpWebRequest;
StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();
responseReader.Close();
webRequest.GetResponse().Close();

MatchCollection m1 = Regex.Matches(responseData, @"(?<=<table class=""ui-widget ui-widget-content""[^>]*>).*?(?=</div>)", RegexOptions.Singleline);

foreach (Match m in m1)
{
    Response.Write(m.ToString());
    //txtPrice.Text = m.ToString();
    //ddlhotels.Text = m.ToString();
}

1 个答案:

答案 0 :(得分:0)

嗯,这并不像阅读现有页面那么简单。搜索结果很可能落后于某种POST,因此您必须对POST数据的外观进行反向工程,自己执行POST,然后阅读结果。

另外,使用Regex to parse HTML is not recommended。您应该使用HtmlAgilityPack,它提供实际的DOM支持,并允许您对文档结构执行XPath查询。

    var doc = new HtmlDocument();
    doc.Load(new StringReader(responseData));

    var nodes = doc.DocumentNode.SelectNodes("//div");
    foreach (HtmlNode link in nodes)
    {
        string title = link.InnerText.Trim();
        // etc.
    }