2017-05-29 14 views
0

私は次のHTMLテーブルを掻き集めるためのコードを持っています:スクラップHTMLテーブル。 UWPとC#

テーブル内の「サービス」を取得するコード。

var MobileSiteLinks = MobileDocument.DocumentNode.SelectNodes("//div[starts-with(@class,'content')]//a[starts-with(@class,'service')]"); 

        foreach (var a in MobileSiteLinks) 
        { 
         DestinationPlaces newPlace = new DestinationPlaces(); 
         newPlace.Services = a.InnerText.Trim(); 
         places4.Add(newPlace); 
        } 

<table class="busexpress-clientwidgets-departures-departureboard"> 
<thead><tr class="rowStopName"><th colspan="3" title="briamaw" data- lat="50.8016420087726" data-lng="-0.0475264219580729" data-bearing="">Cranleigh Avenue</th><tr> 
<tr class="textHeader"><th colspan="3">text briamaw to 84268 for live times</th><tr> 
<tr class="rowHeaders"><th>service</th><th>destination</th><th>time</th><tr></thead><tbody> 
<tr class="rowServiceDeparture"> 
<td class="colServiceName">27</td> 
<td class="colDestination" title="Saltdean">Saltdean</td> 
<td class="colDepartureTime" data-departureTime="29/05/2017 15:04:00" title="1 mins">1 mins</td> 
</tr> 
<tr class="rowServiceDeparture"> 
<td class="colServiceName">14B</td> 
<td class="colDestination" title="Peacehaven">Peacehaven</td> 
<td class="colDepartureTime" data-departureTime="29/05/2017 15:19:00" title="16 mins">16 mins</td> 
</tr> 
<tr class="rowServiceDeparture"> 
<td class="colServiceName">12A</td> 
<td class="colDestination" title="Eastbourne">Eastbourne</td> 
<td class="colDepartureTime" data-departureTime="29/05/2017 15:22:00" title="19 mins">19 mins</td> 
</tr> 
<tr class="rowServiceDeparture"> 
<td class="colServiceName">27</td> 
<td class="colDestination" title="Saltdean">Saltdean</td> 
<td class="colDepartureTime" data-departureTime="29/05/2017 15:23:00" title="20 mins">20 mins</td> 
</tr> 

私は、SelectNodesが現在UWPアプリケーションでサポートされていないことに気付いています。新しいフォーマットを使用して同じ情報を取得するにはどうすればよいですか?

おかげ

答えて

0

私はSELECTNODESが今UWPアプリケーションでサポートされていないことを認識しています。

UWPアプリにはSelectNodesという相対的な方法があります。上記のテーブルをXMLファイルとして保存する場合はXml​Documentクラスを使用でき、SelectNodes(String)メソッドが含まれています。例:

Windows.Data.Xml.Dom.XmlDocument doc; 
StorageFile storageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Onetable.xml")); 
Windows.Data.Xml.Dom.XmlLoadSettings loadSettings = new Windows.Data.Xml.Dom.XmlLoadSettings(); 
doc = await Windows.Data.Xml.Dom.XmlDocument.LoadFromFileAsync(storageFile, loadSettings); 
var xpath = "//tr[@class='rowServiceDeparture']"; 
var MobileSiteLinks = doc.SelectNodes(xpath); 

詳細はXmlDocument official sampleを参照してください。

あなたのコードスニペットは、HtmlAgilityPackパッケージを使用しているようです。上記のコンテンツをHTML形式で保存するだけの場合は、UWPアプリでHtmlAgilityPackを使用することもできます。また、上に示したようにSelectNodesメソッドも含まれています。 UWPでサポートされているHtmlAgilityPack for .NET Coreの使用に注意してください。

WebRequest request = HttpWebRequest.Create("url"); 
WebResponse response = await request.GetResponseAsync(); 
Stream stream = response.GetResponseStream(); 
var result = ""; 
using (StreamReader sr = new StreamReader(stream)) 
{ 
    result = sr.ReadToEnd(); 
} 
HtmlDocument MobileDocument = new HtmlDocument(); 
MobileDocument.LoadHtml(result); 
var nodes = MobileDocument.DocumentNode.SelectNodes("//tr[@class='rowServiceDeparture']"); 
+0

ありがとうございます。ネットのためにHtmlAgilityPackを使用しました。これは私の既存のコードで動作しました! –

関連する問題