2014-09-25 52 views
-1
protected async override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 
     string htmlPage = ""; 
     using (var client = new HttpClient()) 
     { 
     //  htmlPage = await client.GetStringAsync("http://m.buses.co.uk/stop.aspx?stopid=6884"); 

    //htmlPage = await client.GetStringAsync("http://www.imdb.com/movies-in-theaters/"); 
    htmlPage = await client.GetStringAsync("http://m.buses.co.uk/destinations.aspx"); 

     } 

     HtmlDocument htmlDocument = new HtmlDocument(); 
     htmlDocument.LoadHtml(htmlPage); 

     List<Movie> movies = new List<Movie>(); 
     foreach (var div in htmlDocument.DocumentNode.SelectNodes("//div[starts-with(@class, 'menu')]")) 
     { 
      Movie newMovie = new Movie(); 
     // newMovie.Cover = div.SelectSingleNode(".//div[@class='image']//img").Attributes["src"].Value; 
     // newMovie.Title = div.SelectSingleNode(".//h4[@itemprop='name']").InnerText.Trim(); 
     // newMovie.Summary = div.SelectSingleNode(".//div[@class='outline']").InnerText.Trim(); 
      // newMovie.Summary = div.SelectSingleNode(".//div[@class='services']").InnerText.Trim(); 

      newMovie.Summary = div.SelectSingleNode(".//a[starts-with(@href, 'place.aspx')]").InnerText.Trim(); 
      movies.Add(newMovie); 
     } 
     lstMovies.ItemsSource = movies; 
    } 

我想获得热门目的地的名单,地点的名称,下面是我感兴趣的部分。我能够与上面的代码获得第一名 - 美国运通体育场。但它不再显示。解析HTML - 只显示一个项目不在列表

 <div class="menu"> 
    <ul> 
     <li> 
      <a href="place.aspx?placeid=1154"> 
      Amex Stadium 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1136"> 
      Brighton Marina 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=907"> 
      Brighton Station 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=910"> 
      Brighton University Moulsecoomb 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=916"> 
      Churchill Square 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=918"> 
      Coldean 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=924"> 
      County Hospital 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=943"> 
      Eastbourne 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=957"> 
      George Street Hove 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=965"> 
      Hangleton 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=972"> 
      Hollingbury 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=993"> 
      Lewes 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=997"> 
      Longhill School 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1006"> 
      Mile Oak 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1011"> 
      Newhaven 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1134"> 
      North Street 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1020"> 
      Old Steine 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1026"> 
      Patcham 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1028"> 
      Peacehaven 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1035"> 
      Portslade Station 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1042"> 
      Queens Park 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1047"> 
      Rottingdean 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1057"> 
      Seaford 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1062"> 
      Shoreham 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1135"> 
      St Peter's Church 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1074"> 
      Steyning 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1076"> 
      Sussex University 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1080"> 
      Tunbridge Wells 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1082"> 
      Uckfield 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1091"> 
      Westdene 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1092"> 
      Whitehawk 
      </a> 
      </li> 

     <li> 
      <a href="place.aspx?placeid=1095"> 
      Woodingdean 
      </a> 
      </li> 
    </ul> 
    </div> 
+0

这将有助于您提供(一部分)您感兴趣的网页。并清楚说明您尝试过,得到和预期的内容。 – venerik 2014-09-25 21:31:34

+0

对不起,现在就添加更多信息。 – 2014-09-25 21:57:34

+0

请注意,未经他们明确的书面同意,屏幕抓取IMDB不合法。从他们的[使用条件](http://www.imdb.com/help/show_article?conditions):*您不得在本网站上使用数据挖掘,机器人,屏幕抓取或类似的数据收集和提取工具,除我们的明确书面同意如下所述。* – 2014-09-25 22:08:20

回答

0

您的选择是错误的。声明

SelectNodes("//div[starts-with(@class, 'menu')]") 

只选择<DIV class="menu">并且由于只有一个这样的DIV你只能得到一个位置。你应该将其更改为:

SelectNodes("//div[starts-with(@class, 'menu')]/ul/li") 

,然后使用:

newMovie.Summary = div.SelectSingleNode("a[starts-with(@href, 'place.aspx')]").InnerText.Trim(); 

通知,我从后者选择删除.//

相关问题