首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#中任何好的开源网络爬行框架

C#中任何好的开源网络爬行框架
EN

Stack Overflow用户
提问于 2010-12-06 01:04:49
回答 5查看 8.2K关注 0票数 9

我正在构建一个购物比较引擎,我需要构建一个爬行引擎来执行日常数据收集过程。

我已经决定在C#中构建爬虫。我对HttpWebRequest/HttpWebResponse类有很多不好的体验,众所周知,它们对于大型爬虫来说是高度错误和不稳定的。因此,我决定不在它们的基础上进行构建。即使在框架4.0中,它们也是有缺陷的。

我是根据自己的亲身经历说的。

如果他们知道有什么好的开源爬虫框架,比如java有nutch和apache commons,它们是非常稳定和高度健壮的库,我想要这里的专家们的意见,他们已经编码爬虫程序。

如果C#中已经存在一些爬行框架,我将继续在它们之上构建我的应用程序。

如果没有,我计划从代码项目中扩展这个解决方案,并扩展它。

http://www.codeproject.com/KB/IP/Crawler.aspx

如果有人能给我建议一条更好的道路,我将不胜感激。

编辑:我必须抓取的一些网站使用非常复杂的Java Script呈现页面,现在这增加了我的网络爬虫的复杂性,因为我需要能够抓取由JavaScript呈现的页面。如果有人在C#中使用过任何可以抓取javascript渲染的库,请一定要分享。我用过我不喜欢的watin,我也知道有关硒的知识。如果你知道除了这些以外的任何事情,请与我和社区分享。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-02-12 00:36:23

PhantomJS + HtmlAgilityPack

我知道这个话题有点老生常谈,但到目前为止,我在PhantomJS上取得了最好的结果。有一个用于它的NuGet包,并且将它与HtmlAgilityPack相结合使得它成为一个相当不错的抓取和抓取工具包。

此示例仅使用PhantomJS的内置解析功能。这适用于该库的一个非常旧的版本;由于它似乎仍在积极开发中,因此可以放心地认为它已经添加了更多的功能。

代码语言:javascript
运行
复制
void Test()
{
    var linkText = @"Help Spread DuckDuckGo!";
    Console.WriteLine(GetHyperlinkUrl("duckduckgo.com", linkText));
    // as of right now, this would print ‘https://duckduckgo.com/spread’
}

/// <summary>
/// Loads pageUrl, finds a hyperlink containing searchLinkText, returns
/// its URL if found, otherwise an empty string.
/// </summary>
public string GetHyperlinkUrl(string pageUrl, string searchLinkText)
{
    using (IWebDriver phantom = new PhantomJSDriver())
    {
        phantom.Navigate.GoToUrl(pageUrl);
        var link = phantom.FindElement(By.PartialLinkText(searchLinkText));
        if(link != null)
            return link.GetAttribute("href");
    }
    return string.Empty;
}
票数 3
EN

Stack Overflow用户

发布于 2013-03-21 05:22:20

关于C#网络爬虫

来自http://code.google.com/p/abot/的描述说: Abot是一个开源的C#网络爬虫,旨在提高速度和灵活性。它负责低级探测(多线程、http请求、调度、链接解析等)。您只需挂钩到关键事件来处理数据,或者插入您自己的核心接口实现,就可以完全控制爬行过程。

不过还没用过呢。

票数 3
EN

Stack Overflow用户

发布于 2010-12-06 03:43:16

我知道一个叫NCrawler的东西,可以在codeplex上使用。虽然不是个人使用,但一位同事说它工作得很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4360009

复制
相关文章

相似问题

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