0

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

该网站是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();
}
4

1 回答 1

0

好吧,它不像阅读现有页面那么简单。搜索结果很可能在某种 POST 之后,因此您必须对 POST 数据的外观进行逆向工程,自己执行 POST,然后读取结果。

此外,不推荐使用 Regex 解析 HTML。您应该使用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.
    }
于 2012-06-09T18:28:55.913 回答