Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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();