标签: html-agility-pack

如何使用HTML Agility包

我如何使用HTML Agility Pack

我的XHTML文档并不完全有效.这就是我想要使用它的原因.我如何在我的项目中使用它?我的项目是在C#中.

html c# html-agility-pack

619
推荐指数
5
解决办法
35万
查看次数

Html Agility Pack按类获取所有元素

我正在攻击html敏捷包并且无法找到正确的方法来解决这个问题.

例如:

var findclasses = _doc.DocumentNode.Descendants("div").Where(d => d.Attributes.Contains("class"));
Run Code Online (Sandbox Code Playgroud)

但是,显然你可以添加更多的类然后div,所以我尝试了..

var allLinksWithDivAndClass = _doc.DocumentNode.SelectNodes("//*[@class=\"float\"]");
Run Code Online (Sandbox Code Playgroud)

但是这并没有处理你添加多个类的情况,而"float"只是其中之一,就像这样.

class="className float anotherclassName"
Run Code Online (Sandbox Code Playgroud)

有没有办法处理所有这些?我基本上想要选择所有具有class =且包含float的节点.

**答案已记录在我的博客上,并附有完整说明:Html Agility Pack按类获取所有元素

html c# html-agility-pack

73
推荐指数
3
解决办法
10万
查看次数

HtmlAgilityPack:将整个HTML文档作为字符串

HtmlAgilityPack是否能够将HtmlDocument对象中的整个 HTML标记作为字符串返回?

c# html-agility-pack

69
推荐指数
1
解决办法
4万
查看次数

Html Agility Pack仍然是最好的.NET HTML解析器吗?

Html Agility Pack是前一段时间给出StackOverflow问题的答案,它仍然是最好的选择吗?还应该考虑哪些其他选择?有更轻量级的东西吗?

.net html c# parsing html-agility-pack

57
推荐指数
4
解决办法
2万
查看次数

HTML Agility包 - 解析表

我想使用HTML敏捷包来解析复杂网页中的表,但我在对象模型中丢失了.

我查看了链接示例,但没有找到任何表数据.我可以使用XPath来获取表吗?在加载了关于如何获取表格的数据后,我基本上已经丢失了.我之前在Perl中做过这个,它有点笨拙,但很有效.(HTML::TableParser).

如果能够解释正确的解析对象顺序,我也很高兴.

html c# html-parsing html-agility-pack

53
推荐指数
2
解决办法
10万
查看次数

HtmlAgilityPack和HtmlDecode

我目前正在使用带有控制台应用程序的HtmlAgilityPack来抓取一个网站.由于html是编码的(它返回编码的字符'),我必须解码才能将内容保存到我的数据库.

有没有办法使用HtmlAgilityPack解码返回的html而不必使用HttpUtility.HtmlDecode?我希望尽可能避免将System.Web添加到我的控制台应用程序中.

html-agility-pack

51
推荐指数
3
解决办法
2万
查看次数

HTML敏捷包 - 删除不需要的标签而不删除内容?

我在这里看到了一些相关的问题,但他们并没有完全谈论我面临的同样问题.

我想使用HTML Agility Pack从HTML中删除不需要的标记,而不会丢失标记中的内容.

例如,在我的场景中,我想保留标签" b"," i"和" u".

并输入如下:

<p>my paragraph <div>and my <b>div</b></div> are <i>italic</i> and <b>bold</b></p>

生成的HTML应为:

my paragraph and my <b>div</b> are <i>italic</i> and <b>bold</b>

我尝试使用HtmlNodeRemove方法,但它也删除了我的内容.有什么建议?

c# html-agility-pack

44
推荐指数
4
解决办法
4万
查看次数

如何获取具有多个css类的html元素

我知道如何获得相同css类的DIV列表,例如

<div class="class1">1</div>
<div class="class1">2</div>
Run Code Online (Sandbox Code Playgroud)

使用xpath //div[@class='class1']

但是如果div有多个类,例如

<div class="class1 class2">1</div>
Run Code Online (Sandbox Code Playgroud)

xpath会是什么样的呢?

html-agility-pack

41
推荐指数
2
解决办法
4万
查看次数

HtmlAgilityPack并选择节点和子节点

希望有人可以帮助我.

假设我有一个包含多个div的html文档,如下例所示:

<div class="search_hit">

    <span prop="name">Richard Winchester</span>
    <span prop="company">Kodak</span>
    <span prop="street">Arlington Road 1</span>

</div>
<div class="search_hit">

    <span prop="name">Ted Mosby</span>
    <span prop="company">HP</span>
    <span prop="street">Arlington Road 2</span>

</div>
Run Code Online (Sandbox Code Playgroud)

我正在使用HtmlAgilityPack来获取html文档.我需要知道的是我如何获得每个"search_hit"-div的跨度?

我的第一个想法是这样的:

foreach (HtmlAgilityPack.HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='search_hit']"))
{
     foreach (HtmlAgilityPack.HtmlNode node2 in node.SelectNodes("//span[@prop]"))
     {

     }
}
Run Code Online (Sandbox Code Playgroud)

每个div应该是包含spans作为属性的对象.I. e.

public class Record
    {
        public string Name { get; set; }
        public string company { get; set; }
        public string street { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

然后填写此清单:

public List<Record> Results = new List<Record>();
Run Code Online (Sandbox Code Playgroud)

但我正在使用的XPATH并没有在子节点中进行搜索,因为它应该这样做.它接缝一遍又一遍地搜索整个文档.

我的意思是我已经让它以这种方式工作,我只是得到整个页面的跨度.但后来我在跨度和div之间没有任何关系.意思是:我不知道哪个跨度与哪个div有关.

有人知道解决方案吗?我已经玩了很多,我现在完全糊涂了:) …

c# xpath html-agility-pack

40
推荐指数
2
解决办法
7万
查看次数

HtmlAgilityPack选择childNodes不符合预期

我试图使用HtmlAgilityPack库来解析页面中的一些链接,但我没有看到我期望从这些方法得到的结果.在下面我有一个HtmlNodeCollection的链接.对于每个链接,我想检查是否有图像节点,然后解析其属性,但linkNode的SelectNodes和SelectSingleNode方法似乎在搜索父文档而不是linkNode的childNodes给出了什么?

HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(content);
HtmlNodeCollection linkNodes = htmldoc.DocumentNode.SelectNodes("//a[@href]");

foreach(HtmlNode linkNode in linkNodes)
{
    string linkTitle = linkNode.GetAttributeValue("title", string.Empty);
    if (linkTitle == string.Empty)
    {
        HtmlNode imageNode = linkNode.SelectSingleNode("/img[@alt]");     
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以获得linkNode的image childnode的alt属性(如果存在)?

.net c# asp.net xpath html-agility-pack

38
推荐指数
3
解决办法
2万
查看次数

标签 统计

html-agility-pack ×10

c# ×8

html ×4

.net ×2

xpath ×2

asp.net ×1

html-parsing ×1

parsing ×1