标签: html-agility-pack

HtmlAgilityPack - 如何通过Id获取标签?

我有一项任务要做.我需要检索a taghref特定的id(id基于用户输入).示例我有html这样的

<manifest>

<item href="Text/Cover.xhtml" id="Cov" media-type="application/xhtml+xml" />
    <item href="Text/Back.xhtml" id="Back" media-type="application/xhtml+xml" />
  </manifest>
Run Code Online (Sandbox Code Playgroud)

我已经有了这个代码.请帮我.谢谢

HtmlAgilityPack.HtmlDocument document2 = new 

HtmlAgilityPack.HtmlDocument();
document2.Load(@"C:\try.html");
HtmlNode[] nodes = document2.DocumentNode.SelectNodes("//manifest").ToArray();

foreach (HtmlNode item in nodes)
{
    Console.WriteLine(item.InnerHtml);
}
Run Code Online (Sandbox Code Playgroud)

c# html-agility-pack

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

HtmlAgilityPack删除选项结束标记

我正在使用HtmlAgilityPack.我用以下字符串创建一个HtmlDocument和LoadHtml:

<select id="foo_Bar" name="foo.Bar"><option selected="selected" value="1">One</option><option value="2">Two</option></select>
Run Code Online (Sandbox Code Playgroud)

这有些意想不到的事情.首先,它给出了两个解析器错误,EndTagNotRequired.其次,select节点有4个子节点 - 两个用于选项标签,另外两个用于选项标签的内部文本.最后,OuterHtml是这样的:

<select id="foo_Bar" name="foo.Bar"><option selected="selected" value="1">One<option value="2">Two</select>
Run Code Online (Sandbox Code Playgroud)

所以基本上我决定放弃选项上的结束标记.让我们暂时搁置一下,这样做是否合适和可取.我正在使用HtmlAgilityPack来测试HTML生成代码,所以我不希望它为我做出任何决定或者给出任何错误,除非HTML确实是错误的.有没有办法让它表现得我想要的?我尝试为HtmlDocument设置一些选项,具体来说:

 doc.OptionAutoCloseOnEnd = false;
 doc.OptionCheckSyntax = false;
 doc.OptionFixNestedTags = false;
Run Code Online (Sandbox Code Playgroud)

这不起作用.如果HtmlAgilityPack不能做我想做的事,你能推荐一些可以吗?

html parsing html-agility-pack

23
推荐指数
2
解决办法
8000
查看次数

如何使用HtmlAgilityPack获取表单中的所有输入元素而不会出现空引用错误

示例HTML:

 <html><body>
     <form id="form1">
       <input name="foo1" value="bar1" />
       <!-- Other elements -->
     </form>
     <form id="form2">
       <input name="foo2" value="bar2" />
       <!-- Other elements -->
     </form>   
 </body></html>
Run Code Online (Sandbox Code Playgroud)

测试代码:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"D:\test.html");
foreach (HtmlNode node in doc.GetElementbyId("form2").SelectNodes(".//input"))
{
    Console.WriteLine(node.Attributes["value"].Value);            
}
Run Code Online (Sandbox Code Playgroud)

该声明doc.GetElementbyId("form2").SelectNodes(".//input")给了我一个空引用.

我做错了什么?谢谢.

html c# parsing html-agility-pack

23
推荐指数
1
解决办法
2万
查看次数

C#和HtmlAgilityPack编码问题

WebClient GodLikeClient = new WebClient();
HtmlAgilityPack.HtmlDocument GodLikeHTML = new HtmlAgilityPack.HtmlDocument();

GodLikeHTML.Load(GodLikeClient.OpenRead("www.alfa.lt");
Run Code Online (Sandbox Code Playgroud)

所以这段代码返回:"Skaitytojo klausimas psichologui:kaslemiahomoseksualumÄ...? - NaujienųportalasAlfa.lt"而不是"Skaitytojo klausimas psichologui:kaslemiahomoseksualumą? - NaujienųportalasAlfa.lt".

这个网页编码在1257(波罗的海),但textBox1.Text = GodLikeHTML.DocumentNode.OuterHtml;返回扭曲的文本 - 波罗的海变音符被转换成一些奇怪的几个字符长字符串:(

是的,我已经尝试过HtmlAgilityPack论坛了.他们很糟糕.

PS我不是程序员,但是我在社区项目上工作,我真的需要让这段代码工作.谢谢 ;}

c# encoding html-agility-pack

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

从字符串而不是文档/网址加载

我刚刚发现了关于html敏捷包的问题,​​我试过了,但偶然发现了一个问题.我在网上找不到任何东西,所以我在这里尝试.

你知道如何从字符串而不是文档/ URL加载HTML吗?

谢谢.

c# html-agility-pack

23
推荐指数
1
解决办法
2万
查看次数

HtmlAgilityPack:路径中的非法字符

我在这段代码中收到"路径中的非法字符"错误.我已经提到"Error Occuring Here"作为发生错误的行中的注释.

var document = htmlWeb.Load(searchUrl);
var hotels = document.DocumentNode.Descendants("div")
             .Where(x => x.Attributes.Contains("class") &&
             x.Attributes["class"].Value.Contains("listing-content"));

int count = 1;
foreach (var hotel in hotels)
{
    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.OptionFixNestedTags = true;
    htmlDoc.Load(hotel.InnerText);      // Error Occuring Here //
    if (htmlDoc.DocumentNode != null)
    {
        var hotelName = htmlDoc.DocumentNode.SelectNodes("//div[@class='business-container-inner']//div[@class='business-content clearfix']//div[@class='business-name-wrapper']//h3[@class='business-name fn org']//div[@class='srp-business-name']//a[0]");
        foreach (var name in hotelName)
        {
            Console.WriteLine(name.InnerHtml);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# html-parsing html-agility-pack

23
推荐指数
2
解决办法
7355
查看次数

HTML Linq与HtmlAgilityPack,或替代,在PCL中

我已经在.NET 4上编写了一个项目,目前我正在允许它在Windows Phone上运行.我正在使用HtmlAgilityPack,一个众所周知的库,允许Linq查询HTML,并且只使用它提供的LoadHtmlLinq接口.

将类库从.NET 4转换为支持.NET 4和WP8的PCL(可移植类库)后,我似乎无法再使用HtmlAgilityPack库了.有没有办法允许HtmlAgilityPack在PCL项目下正常运行,或者是否有一个类似的Linq接口的可变替代方案可以按预期工作?

编辑:HtmlAgilityPack提供9个不同的版本,其中没有一个与PCL兼容.它们都没有解析引用的依赖关系.对于某些版本,它可能看起来确实如此,但在使用时会出现错误,通常是"无法加载,未解析的依赖项".

编辑#2由于很容易错过一个小评论,我会用我提出的解决方案更新这个答案.我提取了基本功能所需的内容,并实现了缺少的组件以使一切正常.结果在这里https://github.com/Deathspike/HtmlAgilityPack-PCL

.net c# html-agility-pack portable-class-library windows-phone-8

22
推荐指数
2
解决办法
3180
查看次数

如何使用HTML Agility Pack检索网站上的所有图像?

我刚刚下载了HTMLAgilityPack,文档中没有任何示例.

我正在寻找一种从网站下载所有图像的方法.地址字符串,而不是物理图像.

<img src="blabalbalbal.jpeg" />
Run Code Online (Sandbox Code Playgroud)

我需要拉出每个img标签的来源.我只是想了解图书馆及其提供的内容.每个人都说这是这项工作的最佳工具.

编辑

public void GetAllImages()
    {
        WebClient x = new WebClient();
        string source = x.DownloadString(@"http://www.google.com");

        HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
        document.Load(source);

                         //I can't use the Descendants method. It doesn't appear.
        var ImageURLS = document.desc
                   .Select(e => e.GetAttributeValue("src", null))
                   .Where(s => !String.IsNullOrEmpty(s));        
    }
Run Code Online (Sandbox Code Playgroud)

c# parsing html-agility-pack

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

使用HtmlAgilityPack删除属性

我正在尝试style使用HtmlAgilityPack创建一个代码段来删除所有属性而不管标记.

这是我的代码:

var elements = htmlDoc.DocumentNode.SelectNodes("//*");

if (elements!=null)
{
    foreach (var element in elements)
    {
        element.Attributes.Remove("style");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有坚持下去?如果我element立刻看了看对象Remove("style").我可以看到style属性已被删除,但它仍然出现在DocumentNode对象中.:/

我感觉有点傻,但它似乎对我来说?有人用HtmlAgilityPack做过这个吗?谢谢!

更新

我将我的代码更改为以下内容,并且它正常工作:

public static void RemoveStyleAttributes(this HtmlDocument html)
{
   var elementsWithStyleAttribute = html.DocumentNode.SelectNodes("//@style");

   if (elementsWithStyleAttribute!=null)
   {
      foreach (var element in elementsWithStyleAttribute)
      {
         element.Attributes["style"].Remove();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

html html-parsing html-agility-pack

20
推荐指数
2
解决办法
1万
查看次数

HTML Agility Pack在页面上获取所有锚点的href属性

我正在尝试将从HTML文件中提取的链接添加到CheckBoxList(cbl_items).

它到目前为止工作但不是链接,项目的名称显示为HtmlAgilityPack.HtmlNode.我尝试使用DocumentElement而不是Node它说它不存在或类似.

如何才能显示URL而不是HtmlAgilityPack.HtmlNode?

这是我到目前为止所尝试的:

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc = hw.Load(tb_url.Text);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
  cbl_items.Items.Add(link);
}
Run Code Online (Sandbox Code Playgroud)

c# html-agility-pack

20
推荐指数
1
解决办法
2万
查看次数