我正在寻找一种库/方法来解析html文件,该文件具有比通用xml解析库更多的html特定功能。
发布于 2008-09-11 10:35:12
您可以使用TidyNet.Tidy将HTML转换为XHTML,然后使用XML解析器。
另一种选择是使用内置引擎mshtml:
using mshtml;
...
object[] oPageText = { html };
HTMLDocument doc = new HTMLDocumentClass();
IHTMLDocument2 doc2 = (IHTMLDocument2)doc;
doc2.write(oPageText);
这允许您使用类似javascript的函数,如getElementById()
发布于 2009-12-18 12:51:32
我发现了一个名为Fizzler的项目,它采用jQuery/Sizzler方法来选择HTML元素。它基于HTML Agility Pack。它目前处于测试阶段,只支持CSS选择器的一个子集,但是在讨厌的XPath上使用CSS选择器是非常酷和令人耳目一新的。
发布于 2008-09-11 14:08:21
在第三方产品和mshtml (即互操作)上,您可以做很多事情而不会变得疯狂。使用System.Windows.Forms.WebBrowser。从那里,您可以在HtmlDocument上执行"GetElementById“或在HtmlElements上执行"GetElementsByTagName”之类的操作。如果你想实际地与浏览器交互(例如,模拟按钮点击),你可以使用一个小反射(imo比Interop更小的邪恶)来实现:
var wb = new WebBrowser()
..。告诉浏览器导航(与此问题无关)。然后,在Document_Completed事件上,您可以像这样模拟点击。
var doc = wb.Browser.Document
var elem = doc.GetElementById(elementId);
object obj = elem.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]);
你可以做类似的反射来提交表单,等等。
好好享受吧。
https://stackoverflow.com/questions/56107
复制相似问题