C# (.NET) 的无头浏览器? [关闭]

Posted

技术标签:

【中文标题】C# (.NET) 的无头浏览器? [关闭]【英文标题】:Headless browser for C# (.NET)? [closed] 【发布时间】:2012-04-27 00:46:54 【问题描述】:

我(曾经)是一名 Python 开发人员,正在构建一个 GUI Web 抓取应用程序。最近我决定迁移到 .NET 框架并用 C# 编写相同的应用程序(这个决定不是我的决定)。

在 Python 中,我使用了 Mechanize 库。但是,我似乎在 .NET 中找不到任何类似的东西。我需要的是一个以无头模式运行的浏览器,它能够填写表单、提交表单等。javascript 解析器不是必须的,但它会非常有用。

【问题讨论】:

一个不需要任何其他库的diy版本:***.com/a/1995667/17034 ***.com/questions/12059752/… 这可以满足我的需求。 您是否看过 Selenium(即使用无头 chrome、无头 Firefox 或已弃用的 phantomjs Web 驱动程序)? 考虑将问题迁移到softwarerecs.stackexchange.com 在 asp.net 中使用 selenium,无头 chrome; ChromeOptions 选项 = 新 ChromeOptions(); options.AddArgument("--headless");使用 (var driver = new ChromeDriver(options)) ... 【参考方案1】:

有一些选择:

WebKit.Net(免费)

Awesomium 它基于 Chrome/WebKit,就像一个魅力。 有可用的免费许可证,但也有商业许可证,如果需要,您可以购买源代码 :-)

html Agility Pack(免费)(HTML 解析器库,不是无头浏览器) 这有助于从 HTML 等中提取信息,并且可能对您的情况有用(可能与 HttpWebRequest 结合使用)

【讨论】:

谢谢。嗯,如果我错了,请纠正我,但不是所有这些(或至少前两个)都需要创建用户界面(我从阅读文档中想到)?我需要的是一个无头浏览器,所以没有 GUI。 @Deusdies NO - 至少第二个(Awesomium)和第三个(HTML Agility Pack)链接完全无头......第一个链接我不确定...... @Deusdies 例如 Awesomium - 根据文档(请参阅 awesomium.com/docs/1_6_5/sharp_api),如果您想在 UI 中渲染它们,它会为您提供像素,如果不是,则不需要。 对于通过 google 来到这里的任何人来说,HTML Agility Pack 不是无头浏览器,它只是一个与 web 客户端结合使用的 html 解析器。无头浏览器的功能远不止 9 自从回答了这个问题后,Awesomium 看起来已经死了。 answers.awesomium.com/questions/6880/…【参考方案2】:

更多解决方案:

PhantomJS - 全功能无头网络 浏览器。经常与 Selenium 一起使用,它可以让你 从 .NET 应用程序访问浏览器。 Optimus (nuget package)- 轻量级无头网络浏览器。它处于测试阶段,但在某些情况下已经足够了。

我曾经将两者都用于网络测试。但它们也适用于网页抓取。

【讨论】:

始终欢迎提供指向潜在解决方案的链接,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及它存在的原因。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。考虑到仅仅是指向外部站点的链接是Why and how are some answers deleted? 的一个可能原因 谢谢你们。我已经更新了我的答案。 过度宣传特定产品/资源可能会被社区视为垃圾邮件。看看help center,特别是What kind of behavior is expected of users? 的最后一部分:避免公开的自我推销。您可能还对How do I advertise on Stack Overflow? 感兴趣。 @Knyaz - 你有 Selenium 的工作示例吗?比方说,当一些 javascript 运行并从该 javascript 获取返回时。 @Knyaz,需要 Optimus 支持。请查看 optimus.net@yandex.ru。【参考方案3】:

您可能正在使用 TrifleJS(目前处于测试阶段),或使用通过无窗口 ActiveX/COM API 与 IE 通信的 .NET WebBrowser 类进行类似的操作。

如果您对 JavaScript API(phantomjs 的端口)不感兴趣,您实际上将使用 Internet Explorer 的 Trident 引擎运行一个成熟的浏览器(不是 http 请求包装器),您可能仍然可以使用一些 C# 代码库来解决关键概念(自定义标头、cookie、脚本执行、屏幕截图渲染等)。

请注意,这也可以模拟不同版本的 IE,具体取决于您安装的内容。

【讨论】:

以上是关于C# (.NET) 的无头浏览器? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

带有 C# 的 Optimus 无头浏览器

PHP无头浏览器? [关闭]

适用于 Python 的无头浏览器(需要 Javascript 支持!)[关闭]

无头互联网浏览器? [关闭]

使用无头浏览器进行 Android Web Scraping [关闭]

为啥 .NET API 浏览器示例是用 C++ 而不是 C# 编写的? [关闭]