【问题标题】:How to scrape xml file using htmlagilitypack如何使用 htmlagilitypack 抓取 xml 文件
【发布时间】:2012-02-24 21:21:32
【问题描述】:

我需要从 http://feeds.feedburner.com/Torrentfreak 抓取一个 xml 文件以获取其链接和描述。

我使用了这个代码:

    var webGet = new HtmlWeb();
                var document = webGet.Load("http://feeds.feedburner.com/TechCrunch");
    var TechCrunch = from info in document.DocumentNode.SelectNodes("//channel")
                                 from link in info.SelectNodes("//guid[@isPermaLink='false']")
                                 from content in info.SelectNodes("//description")
     select new
                                 {
                                     LinkURL = info.InnerText,
                                     Content = content.InnerText,

                                 };
lvLinks.DataSource = TechCrunch;
            lvLinks.DataBind(); 

我已经在列表视图控件中使用它来显示在 asp.net 页面上。 使用

<%# Eval("LinkURL") %>  -  <%# Eval("Text") %> 

但显示错误

值不能为空。 参数名称:来源

有什么问题?是否可以使用 HtmlAgilityPack 抓取(获取)xml 节点数据? 请建议 谢谢

【问题讨论】:

  • 为什么不使用 XML 库而不是 HtmlAgilityPack?
  • @jerjer : 实际上我正在使用 HtmlAgilityPack 来处理 HTML 数据,但是当我遇到 XML 文件时,我需要寻找一种方法来实现这一点。

标签: c# asp.net screen-scraping html-agility-pack


【解决方案1】:

错误表明该值为空。所以也有可能的

select new
         {
                LinkURL = info.InnerText??string.Empty,
                Content = content.InnerText??string.Empty,

         };

或在 aspx 中。我认为它应该在这样的字符串中减去:

<%# Eval("LinkURL")??string.Empty %>+"-"+<%# Eval("Text")??string.Empty %> 

【讨论】:

    【解决方案2】:

    尝试使用 RSS 库而不是 HtmlAgilityPack:

    以下是一些可能对您有所帮助的链接:

    【讨论】:

    • 如果我选择 jerjer 建议的 XML 库而不是这个呢?
    • 它比 XML 库更高效吗?
    • @CracLock,我没有做过 HtmlAgilityPack 和 XML 库之间的基准测试,但我认为在效率方面没有太大差异。 IMO,在处理 xml 文件时,XML 库比 HtmlAgilityPack 更易于使用。
    • 这是个好建议...谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2012-07-20
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多