2010-01-11 32 views
0

我正在创建一个C#应用程序以获取网页的DOM信息。 我无法使用我的应用程序提取TBODY标签。 我使用帮助从网页的DOM中提取标记

  • 由Visual Studio

  • 到COM Microsoft.mshtml 7.0.3300.0

参考附带的WebBrowser控件如果我使用Internet Explorer Developer Toolbar)我可以看到我需要的所有信息。

标签具有ID =“tbody_id”和携带的标签完整的数据 的是在属性innertHTML和innertText显示一个列表。

使用下面的代码innertHtml和innertText都为null。 我做错了什么? 有

 
mshtml.IHTMLDocument3 domDoc = this.webBrowser.Document.DomDocument as mshtml.IHTMLDocument3; 
mshtml.IHTMLElement element = domDoc.getElementById("tbody_id"); 
String innerHtml = element.innerHTML; 
String innerText = element.innerText; 

回答

0

我一直在努力类似,我可以使用其他控件 - 你可以尝试的唯一一件事就是隐式转换。

我做类似的,没有任何麻烦getElementby

IHTMLDocument3 currDocument3 = (IHTMLDocument3)webBrowser.Document.DomDocument; // Cast browser document 
    IHTMLElement element = currDocument3.getElementById("f15188"); 

希望这有助于

罗杰

+0

嗨罗杰 我试过,但它不适合我。在我的情况下,元素变量不是null,而是由它返回的innserText。在测试了不同的东西之后,我发现WebBrowsing是一个非常好的控件,非常棒。请参阅我写下的笔记,并按照主要和更详细的示例代码的链接。 我非常感谢你的时间 AFG – 2010-01-12 21:57:13

0

为所有感兴趣的我终于解决了这个问题。

我只是从Microsoft的WebBrowser控件切换到csEXWB

一个不错的专栏,看看它是如何工作的可以找到here我在哪里学习了代码来正确提取DOM信息。

该控件必须注册,因为ti似乎是一个COM组件(请阅读网站和列中的注释)。

  1. 在您的表单中放置一个cEXWB,您将在您的应用中拥有一个Web浏览器控件。

    // your object somewhere 
    public csExWB.cEXWB cEXWB1;
  2. 转到网站你想

    cEXWB1.Navigate("http://stackoverflow.com")
  3. 加载后得到的DOM和每个元素你想

    IHTMLDocument3 domDoc = cEXWB1.WebbrowserObject.Document as mshtml.IHTMLDocument3; 
    IHTMLElement element = domDoc.getElementById("my_id");