0

次の HTML ファイルを解析しようとしています。キーの値を取得したいと思います。これは、Silverlight for Windows phone で行われています。

</tr>
<tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">10:00</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=596">Ральф</a></td><td width="30%" id="tbcol" align="center">100 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">12:00</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">100 - 120 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">14:20</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">120 - 150 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">16:40</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=607">Бункер</a></td><td width="30%" id="tbcol" align="center">150 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">18:40</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">150 - 180 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr><tr><td width="26"><div style="width: 26px; height: 1px;"><spacer type="block" width="26" height="1" /></div></td><td width="60" id="tbtime">21:00</td><td width="70%" id="tbcol"><a href="/repertoir/filminfo.php?id=595"> Сумерки. Сага. Рассвет: Часть 2</a></td><td width="30%" id="tbcol" align="center">150 - 180 руб.</td></tr><tr><td width="26" height="4"><div style="width: 26px; height: 4px;"><spacer type="block" width="26" height="4" /></div></td><td width="60"></td><td width="100%" colspan="2"></td></tr></table>
<br /><br />
<br /><br />

 public void myparsing()
    {          
       HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        WebClient webClient = new WebClient();
        document.LoadHtml(webClient.DownloadString("http://udokan.chita.ru/"));
        var node = document.DocumentNode.SelectSingleNode("//body/table/tr/td[4]/table");
        if (node != null)
        {
            var innerText = node.InnerText;              
            richTextBox1.AppendText(innerText);
        }       

    }

レパートリーの情報を知りたいのですが、できません。HttpAgilityPack に問題があります。メソッド SelectNodes が機能しません。私を助けてください、私の悪い英語でごめんなさい。

4

2 に答える 2

0

100%確信があるわけではありませんが、頭のてっぺんから次のように考えています。

WebClient と Silverlight は非同期で動作することに注意してください。そのため、LoadHtml メソッドに渡す前に Html がダウンロードされていることを確認してください。そのため、DownloadStringAsync を使用して、完全な Cal​​lback でドキュメントを読み込む方がよいでしょう。

html ソースのコピーを文字列として開始し、XPath クエリが正しいかどうかを確認します。

あなたのHTMLサイトとソースを見ると、「//body/table/tr/td[4]/table」はありません

//body/table には 4 つの TD 要素を持つテーブルが 1 つありますが、これはゼロベースのインデックス配列であることに注意してください...したがって、td[3] は 4 番目の要素になります...

したがって、論文は単なる考えであり、お役に立てば幸いです..

于 2012-11-21T08:17:46.170 に答える
0

あなたはそのようなことをすることができます:

        public void MyParsing()
    {
        const string baseUrl = "http://udokan.chita.ru/";
        var htmlDoc = new HtmlDocument();
        var webClient = new WebClient();
        htmlDoc.LoadHtml(webClient.DownloadString(baseUrl));
        var htmlNodeCollection = htmlDoc.DocumentNode.SelectNodes("//a[@href]");
        if (htmlNodeCollection != null)
        {
            foreach (var link in htmlNodeCollection)
            {
                try
                {
                    if(link.Attributes["href"].Value.Contain("repert"))
                    {
                    var newUrl = new Uri(new Uri(baseUrl), link.Attributes["href"].Value).AbsoluteUri;
                    var queries = HttpUtility.ParseQueryString(string.Join(string.Empty, newUrl.Split('?').Skip(1)));
                    var id = queries["id"];
                    richTextBox1.AppendText(id);
                    }
                }
                catch (Exception)
                {
                }
            }
        }

    }
于 2012-11-21T08:18:31.837 に答える