基本上我需要加载dom然后使用jquery选择器和text()& type val()函数从中提取字符串.我真的不需要操纵dom.
我看过.Net javascript引擎,如Jurassic和Jint,但都不支持加载DOM,因此不能做我需要的.
我愿意考虑非.Net解决方案(node.js,ruby等),如果它们存在,但是真的更喜欢.Net.
编辑
下面是一个很好的答案,但目前我正在尝试不同的路线,我试图将envjs移植到侏罗纪.如果我可以开始工作,我认为它会做我想做的事,请继续关注….
解决方法
但正如您所指出的,您仍然需要一个DOM.在纯C#中有XBrowser,但它看起来有点陈旧.整个浏览器DOM都有基于javascript的表示,如jsdom.您可以在Jurassic中运行jsdom,在没有浏览器的情况下为您提供DOM模拟,所有这些都在C#中(虽然可能非常慢!)它肯定会在V8中运行得很好.如果您不在.NET领域之外,还有其他更好的支持解决方案. This question讨论了HtmlUnit.然后是Selenium用于自动化实际的Web浏览器.
另外,请记住,围绕这些工具完成的许多工作都是用于测试.虽然这并不意味着您不能将它们用于其他内容,但它们可能无法在内联生产代码中执行或集成以用于任何类型的稳定使用.如果您尝试基本上进行实时HTML操作,那么混合使用许多技术的解决方案可能是一个糟糕的选择.
如果您的需求实际上是HTML操作,并且它实际上不需要使用Javascript,但您正在考虑JS中可用的此类工具的丰富内容,那么我将查看为此目的而设计的C#工具.例如HTML Agility Pack,或者我自己的项目CsQuery,它是一个C#jQuery端口.
如果您基本上尝试获取为客户端编写的一些代码,但在服务器上运行它 – 例如对于复杂/加速的网络抓取 – 我会搜索这些术语.例如this question讨论了这一点,答案包括PhantomJS,无头webkit浏览器堆栈,以及我已经提到的一些测试工具.对于网页抓取,我想你可以在没有它的情况下生活在.NET中,这可能是唯一合理的答案.