首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用XPath和HTMLAbilityPack提取HTML的某一部分

用XPath和HTMLAbilityPack提取HTML的某一部分
EN

Stack Overflow用户
提问于 2013-09-08 11:32:33
回答 2查看 922关注 0票数 1

我对XPath语法有一个问题,因为我不知道如何使用它来提取特定的HTML语句。我正在尝试从频道页面加载视频信息;http://www.youtube.com/user/CinemaSins/videos

我知道有一行可以保存视图、标题、ID等的所有细节。

下面是我试图从html中获得的信息:

那是2836号线;

代码语言:javascript
复制
<div class="yt-lockup clearfix  yt-lockup-video yt-lockup-grid context-data-item" data-context-item-id="ntgNB3Mb08Y" data-context-item-views="243,456 views" data-context-item-time="9:01" data-context-item-type="video" data-context-item-user="CinemaSins" data-context-item-title="Everything Wrong With The Chronicles Of Riddick In 8 Minutes Or Less">

我不知道怎么做,但我有HTML能力包作为资源添加,并开始尝试获得它。有人能解释一下如何获取所有这些细节和涉及到的XPath语法吗?

我所尝试的是:

代码语言:javascript
复制
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='yt-lockup clearfix  yt-lockup-video yt-lockup-grid context-data-item']//a"))
            {
                if (node.ChildNodes[0].InnerHtml != String.Empty)
                {
                    title.Add(node.ChildNodes[0].InnerHtml);
                }
            }

^以上代码只用于获取每个视频的标题。但它也有一个空白的输入。执行的代码和结果如下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-09 21:48:56

似乎给我的答案并没有帮助

代码语言:javascript
复制
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='yt-lockup clearfix  yt-lockup-video yt-lockup-grid context-data-item']"))
            {
                String val = node.Attributes["data-context-item-id"].Value;
                videoid.Add(val);
            }

我只需要在课堂上抓取内容。知道了这一点就更容易使用了。

票数 1
EN

Stack Overflow用户

发布于 2013-09-08 12:04:25

您的xpath正在选择<div>中的<div>元素。如果您也想要<div>的属性,那么您需要

( a)选择这两个元素并分别处理它们。( b)运行几个xpath查询,其中指定所需的确切属性。

让我们用(a)作为这个例子。

代码语言:javascript
复制
var nodes = doc.DocumentNode.SelectNodes("//div[@class='yt-lockup clearfix  yt-lockup-video yt-lockup-grid context-data-item']");

并获得如下的属性和标题:

代码语言:javascript
复制
foreach(var node in nodes)
{
  foreach(var attribute in node.Attributes)
  {
    // ... Get the values of the attributes here.
  }

  var linkNodes = node.SelectNodes("//a"));
  // ... Get the InnerHtml as per your own example.
}

我希望这已经足够清楚了。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18683171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档