首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HtmlAgilityPack多元

HtmlAgilityPack多元
EN

Stack Overflow用户
提问于 2016-02-15 16:38:07
回答 2查看 1.5K关注 0票数 1

我有一个包含多个div的html文档。

示例:

代码语言:javascript
运行
复制
<div class="element">
    <div class="title">
        <a href="127.0.0.1" title="Test>Test</a>
    </div>
</div>

现在我使用这段代码来提取title元素。

代码语言:javascript
运行
复制
List<string> items = new List<string>();
var nodes = Web.DocumentNode.SelectNodes("//*[@title]");
if (nodes != null)
{
   foreach (var node in nodes)
   {
       foreach (var attribute in node.Attributes)
           if (attribute.Name == "title")
               items.Add(attribute.Value);
   }
}

我不知道如何调整代码以同时提取href和title元素。

每个div应该是一个对象,其中包含一个标记作为属性。

代码语言:javascript
运行
复制
public class CheckBoxListItem
{
    public string Text { get; set; }
    public string Href { get; set; }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-15 16:55:41

您可以使用以下xpath查询来检索带有标题和href的标记:

代码语言:javascript
运行
复制
//a[@title and @href]

您可以这样使用您的代码:

代码语言:javascript
运行
复制
List<CheckBoxListItem> items = new List<CheckBoxListItem>();
var nodes = Web.DocumentNode.SelectNodes("//a[@title and @href]");
if (nodes != null)
{
   foreach (var node in nodes)
   {
      items.Add(new CheckBoxListItem()
      {
        Text = node.Attributes["title"].Value,
        Href = node.Attributes["href"].Value
      });
   }
}
票数 1
EN

Stack Overflow用户

发布于 2016-02-15 17:15:44

我经常将ScrapySharp的包与HtmlAgilityPack一起用于css选择。

(为ScrapySharp.Extensions添加一个using语句,以便您可以使用CssSelect方法)。

代码语言:javascript
运行
复制
using HtmlAgilityPack;
using ScrapySharp.Extensions;

在你的情况下,我会:

代码语言:javascript
运行
复制
HtmlWeb w = new HtmlWeb();

var htmlDoc = w.Load("myUrl");
var titles = htmlDoc.DocumentNode.CssSelect(".title");
foreach (var title in titles)
{
    string href = string.Empty;
    var anchor = title.CssSelect("a").FirstOrDefault();

    if (anchor != null)
    {
        href = anchor.GetAttributeValue("href");
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35414513

复制
相关文章

相似问题

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