gpt4 book ai didi

c# - 任何优秀的 C# 开源网络爬虫框架

转载 作者:太空狗 更新时间:2023-10-29 17:48:44 25 4
gpt4 key购买 nike

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

我决定用 C# 构建爬虫。我对 HttpWebRequest/HttpWebResponse 类有很多糟糕的体验,并且众所周知,对于大型爬网来说,它们存在大量错误并且不稳定。所以我决定不以它们为基础。即使在框架 4.0 中,它们也有问题。

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

我想听听这里一直在编写爬虫代码的专家的意见,如果他们知道任何好的开源爬虫框架,比如 java 有 nutch 和 apache commons,它们是非常稳定和高度健壮的库。

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

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

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

如果有人能建议我更好的路径,我将非常感激。

编辑:我必须抓取的一些网站使用非常复杂的 Java 脚本呈现页面,现在这增加了我的网络抓取工具的复杂性,因为我需要能够抓取由 JavaScript 呈现的页面。如果有人在 C# 中使用过任何可以抓取呈现的 javascript 的库,请分享。我用过我不喜欢的watin,我也知道selenium。如果您知道除这些以外的任何内容,请与我和社区分享。

最佳答案

PhantomJS + HtmlAgilityPack

我知道这个话题有点老了,但我用 PhantomJS 得到了最好的结果.有一个 NuGet对其进行打包,并将其与 HtmlAgilityPack 相结合,形成了一个相当不错的抓取和抓取工具包。

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

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;
}

关于c# - 任何优秀的 C# 开源网络爬虫框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com