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を実行してから、結果を読み取る必要があります。

また、正規表現を使用して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 に答える