在C#中的Web浏览 - 库,工具等 - 有像Perl中的Mechanize一样的东西吗?

16

寻找类似于.NET的Mechanize...

如果您不知道什么是Mechanize... http://search.cpan.org/dist/WWW-Mechanize/

我将在此处维护建议列表。 除了WebRequest和WebBrowser控件之外,还有浏览/发布/屏幕抓取的任何内容。

解析

Web应用程序测试

工具

  • Firefox的Firebug
  • IE的Internet Explorer开发人员工具栏
  • Chrome也有一个

注意

WatiN接近我正在寻找的内容,但它会打开一个浏览器,这既令人讨厌又很棒。这取决于您正在做什么。


1
在 WatiN 中,只需将“IE.Settings.MakeNewIeInstanceVisible”属性设置为false,并查看“IE.Settings.AutoStartDialogWatcher”。更多信息请访问http://www.watin.net。 - Oscar Mederos
只需从C#调用Perl,.NET中没有像Web Mechanize这样的东西。 - Matthew Lock
7个回答

3
您可以使用可自动化的WebBrowser控件。

2
你需要使用HTML Agility Pack,它可以将真实网站的标签混乱代码解析成DOM结构。

2
这对于获取页面后进行解析非常有用,但其他方面呢?比如登录网站、管理cookie、处理重定向等等? - Jason
使用WebClient类,或HAP的HtmlWeb类,或带有CookieContainerHttpWebRequest类。 - SLaks
我知道在.NET中可以用那种方式实现,但我想要更高级别的东西,就像Mechanize一样。如果没有类似的库也没关系,我只是想知道是否有能够像WebClient等现有库所做的事情的库。 - Jason
2
我的一个朋友用 Mechanize 写了一个和我的 C# 程序功能相同的程序,只有 13 行代码。而我的则多得多。只有 13 行!=P - Jason

2

我一直在使用WatiN,效果非常不错。它是一种简单的方式,可以1)自动化IE用户输入和2)浏览DOM。


2
WatiN需要实际启动浏览器窗口。Mechanize仅在内存中运行。 - kenwarner
虽然速度有点慢,但观看浏览器自动化仍然很有趣。更有趣的是,在处理DOM的任何部分时调用.Highlight方法,您可以观察到处理过程。 - PhilChuang
WatiN的另一个好处是,它与IE交互,可以处理实时DOM——也就是说,如果页面是由JavaScript构建的,那么就没有问题。我不相信HTML Agility Pack能做到这一点。 - PhilChuang
@qntmfred:您可以隐藏那些窗口:"IE.Settings.MakeNewIeInstanceVisible = false"。还有另一个属性可以处理对话框:"IE.Settings.AutoStartDialogWatcher"。 - Oscar Mederos

2

你还可以使用Selenium。它是用于对网站进行单元测试的工具。它有一个Java应用程序来驱动浏览器,还有一个C#接口可供编写代码。不过它也有一个缺点:会显示浏览器,但在控制、等待响应和获取结果方面非常全面。


1

设计画布是这种类型的最佳工具。可以在IE、Firefox、Safari或内存浏览器中使用。它允许您记录并回放任何类型的网络交互。


0

0

我已经对Python-Mechanize进行了逆向工程,并在C#中重新创建了它,称为Mechanize.NET。

https://github.com/WilliamABradley/Mechanize.NET

希望这可以涵盖 Mechanize 的所有用例,如果不行或您发现了一个 bug,请创建一个 issue。
它使用 .NET Standard,因此应该可在 .NET 上使用,例如使用 F#、VB 等。
它在内部利用了 HtmlAgilityPack,并且甚至可以收集每个加载页面的 HtmlDocument。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接