Xpath 解析HTML-仅显示一项而不是列表 受保护的异步覆盖无效OnNavigatedTo(NavigationEventArgs e) { 基地。导航到(e); 字符串htmlPage=“”; 使用(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=新HtmlDocument(); htmlDocument.LoadHtml(htmlPage); 列表电影=新列表(); foreach(htmlDocument.DocumentNode.SelectNodes中的var div(“//div[以(@class,'menu')]开头]”) { Movie newMovie=新电影(); //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[以(@href,'place.aspx')]”开头)。InnerText.Trim(); 添加(newMovie); } lstMovies.ItemsSource=电影; }
我想得到热门目的地的名单,这些地方的名字,下面是我感兴趣的部分。我能够用上面的代码获得第一名——美国运通体育场。但它不会再显示了Xpath 解析HTML-仅显示一项而不是列表 受保护的异步覆盖无效OnNavigatedTo(NavigationEventArgs e) { 基地。导航到(e); 字符串htmlPage=“”; 使用(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=新HtmlDocument(); htmlDocument.LoadHtml(htmlPage); 列表电影=新列表(); foreach(htmlDocument.DocumentNode.SelectNodes中的var div(“//div[以(@class,'menu')]开头]”) { Movie newMovie=新电影(); //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[以(@href,'place.aspx')]”开头)。InnerText.Trim(); 添加(newMovie); } lstMovies.ItemsSource=电影; },xpath,html-agility-pack,Xpath,Html Agility Pack,我想得到热门目的地的名单,这些地方的名字,下面是我感兴趣的部分。我能够用上面的代码获得第一名——美国运通体育场。但它不会再显示了 protected async override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string htmlPage = ""; using (var client = new HttpClient())
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;
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
您的选择是错误的。声明
<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>
只选择
,因为只有一个这样的DIV,所以只能得到一个位置。您应该将其更改为:
SelectNodes("//div[starts-with(@class, 'menu')]")
然后使用:
SelectNodes("//div[starts-with(@class, 'menu')]/ul/li")
请注意,我从后一个选择中删除了
/
。如果您提供了您感兴趣的页面(其中的一部分),则会有所帮助。以及对您尝试、获得和期望的内容的清晰解释。抱歉,现在添加了更多信息。请记住,未经他们明确书面同意,屏幕抓取IMDB是不合法的。从他们那里:除非得到我们的明确书面同意,否则您不能在本网站上使用数据挖掘、机器人、屏幕抓取或类似的数据收集和提取工具,如下所述。@cory-这只是一个例子。我使用了一个例子,这个例子是在IMDB信息表单中获取的。
newMovie.Summary = div.SelectSingleNode("a[starts-with(@href, 'place.aspx')]").InnerText.Trim();