【问题标题】:Ways to extract link and post from a web page using htmlagilitypack in c#?在 c# 中使用 htmlagilitypack 从网页中提取链接和发布的方法?
【发布时间】:2012-01-05 03:45:04
【问题描述】:

我正在设计一个网站,它会抓取顶级技术网站,例如 thenextweb.com、mashable.com 和 readwriteweb.com 等。

现在使用 Html Agility Pack 废弃的一种方法是让一个网站让 thenextweb.com 根据其<tags> 获取其文章链接和内容,即使用<div class ="article-listing"> ..... </div> 并通过它获取链接。 以相同的方式为每个网站设计算法(因为每个网站的标签都不同)。

这是我用来从网站 thenextweb.com 的主页获取链接的内容:

var webGet = new HtmlWeb(); 
var document = webGet.Load(url); 
var infos = from info in 
            document.DocumentNode.SelectNodes("//div[@class='article-listing']") 
               select new 
                { 
                Contr = info.InnerHtml 
                 }; 

lvLinks.DataSource = infos; 
lvLinks.DataBind();

有没有其他简单的方法可以提取链接和内容(帖子及其图片、日期等)?

【问题讨论】:

    标签: c# asp.net web-crawler html-agility-pack


    【解决方案1】:

    所有这些网站都应该有RSS 提要,这是获取数据的最糟糕的方式。例如,The Next Web 有这些标签(您实际上并不需要标签,只需要 URL):

    <link rel="alternate" type="application/rss+xml" title="TNW Network All Stories RSS Feed" href="http://feeds2.feedburner.com/thenextweb" />
    <link rel="alternate" type="application/rss+xml" title="TNW Network Top Stories RSS Feed" href="http://feeds2.feedburner.com/thenextwebtopstories" />   
    

    http://feeds2.feedburner.com/thenextwebtopstories

    提要应采用相同的格式(或至少是类似的格式),这比原始 HTML 更容易理解,并且不太可能改变。找到 .Net RSS 解析器应该不会有任何问题。

    【讨论】:

    • 谢谢,但这不是我想做的。
    • @iKunu - 你能编辑问题并准确解释你需要什么,为什么这不能解决问题? RSS 是从网站获取故事的首选方式...
    • :我需要对所有故事进行一些自定义...这就是为什么我只需要从网页中获取它们。但现在我找到了一种方法来做到这一点。谢谢
    【解决方案2】:

    我有办法提取链接使用

    LINQ 中的更多“from”子句

    我可以使用

    var infos = from info in document.DocumentNode.SelectNodes("//div[@class='article-listing']") 
                   from link in info.SelectNodes("h4//a").Where(x => .Attributes.Contains("href"))
    
                    select new 
                    { 
                    LinkURL = link.Attributes["href"].value
                     }; 
    

    通过这种方式可以获取链接、图片。

    谢谢...现在没有问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2019-04-12
      • 2023-03-18
      • 2011-07-04
      • 2018-01-26
      • 1970-01-01
      相关资源
      最近更新 更多