当前位置:编程学习 > C#/ASP.NET >>

HtmlElement的对象的OuterHtml属性问题

HtmlElement的对象的OuterHtml属性,这个属性是获取网页节点的所有Html文本,但是有一个问题,有时候获取的源码和网页里的源码是不同的,有出入,请问,如何获取和网页元素一样的代码。这个问题网上好像不多,不知道这里有没有人碰到过。
   string strHTML = CurHtmlElem.OuterHtml; 
            int intTmep = 0;
            WebBrowser browser = new WebBrowser();
            browser.Navigate("about:blank");
            browser.ScriptErrorsSuppressed = true;                         // 屏蔽一些脚本错误         
            HtmlDocument doc = browser.Document;
            while (intTmep < DomTreeAttribute.ListDomTree.Count)           // DomTreeAttribute.ListDomTree自己生产的DOM 也就是源码
            {
                try
                {
                    string strNowEem = DomTreeAttribute.ListDomTree[intTmep]["Body"].ToLower();    // 网页源码
                    HtmlElement htElement = doc.CreateElement(strNowEem);                          // 也生成HtmlElement对象,可是这个对象的内容也CurHtmlElem对象的内容对不上了
                    if (strHTML.Equals(strNowEem))
                    {
                        label1.Text = "选中节点路径 " + DomTreeAttribute.ListDomTree[intTmep]["Path"] + "  " + strHTML;
                    }
                    else if (strHTML.Equals(htElement.OuterHtml.ToLower().Replace("\"", "")))
                    {
                        label1.Text = "选中节点路径 " + DomTreeAttribute.ListDomTree[intTmep]["Path"] + "  " + strHTML;
                    }
                    intTmep++;
                }
                catch
                {
                    intTmep++;
                }
            }

CurHtmlElem
   HtmlElement CurHtmlElem;       // 当前节点
        void Document_MouseOver(object sender, HtmlElementEventArgs e)
        {
            //// 保存当前的element
            RectElem.Width = RectElem.Height = 0;
            CurHtmlElem = e.ToElement;
           
            //// 让browser控件绘图,删除框框            
            TagRECT rect = new TagRECT(0, 0, wbrShowPage.Width, wbrShowPage.Height);
            InvalidateRect(IntptrHwnd, ref rect, false);
            timerPotion.Enabled = false;
        }


 比如,网页源码有一个节点的OuterHtml是,<td style='backcolor='...'></td>,而outerhtml就变成了<td style='backcolor=...;width=...'></td>,多了一个width属性,cmImpressionSent属性.... --------------------编程问答-------------------- 将网页读成流,具体参考
http://wenku.baidu.com/view/d5c9e58ecc22bcd126ff0c21.html --------------------编程问答--------------------
引用 1 楼 wtj2832 的回复:
将网页读成流,具体参考
http://wenku.baidu.com/view/d5c9e58ecc22bcd126ff0c21.html

这个不一样吧 --------------------编程问答--------------------
引用 1 楼 wtj2832 的回复:
将网页读成流,具体参考
http://wenku.baidu.com/view/d5c9e58ecc22bcd126ff0c21.html

多谢了!不过你没有理解我的意思! --------------------编程问答-------------------- --------------------编程问答--------------------
引用 4 楼 kingdom_0 的回复:
帮顶!

多谢! --------------------编程问答-------------------- 我也遇到这个问题了,暂时还没解决 --------------------编程问答-------------------- 这贴子两年了,有解决方案了吗? --------------------编程问答-------------------- 在网页上查看源代码得到的内容和 在程序中用WebBrowser或者HttpRequest请求得到的返回内容本来就不是一样的。 以你开发时采取的方法为准,你采取的WebBrowser获取源代码,那就不要管右键查看的网页源码了。 --------------------编程问答-------------------- 浏览器的View source取得的是从服务器其传回的html,后面javascript修改的东西不会在里面的,至少Chrome是这样的,我刚刚查看的。

--------------------编程问答-------------------- 是不是用HttpWebRequest会好点,或者可以试一试在DocumentComplete中取得试一试,这时候js还没有执行。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,