问题描述
如题下面是IE中F12查看到的源码<scripttype="text/javascript"src="base-pages/js/changeHeight.js"></script><scripttype="text/javascript"src="base-pages/js/roomHeight.js"></script><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><title>avi</title><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><styletype="text/css"><!--.z{background-image:url(images/m-bg.jpg);background-repeat:no-repeat;;padding:20px;}.STYLE2{padding:10px;color:#9F0018;font-weight:bold;font-size:14px;}--></style><scriptlanguage="javascript">varcurrentposit='5';varCurrentPosition=0;varplayofEnd=0;functionstopPlay(){document.MediaPlayer.Pause();}functioncontinuePlay(){document.MediaPlayer.Play();}functionPositionChange(dblNewPosition){//alert(dblNewPosition);//document.MediaPlayer.Seeking(dblNewPosition);document.MediaPlayer.CurrentPosition=dblNewPosition;}functioncurrentPosition(){CurrentPosition=document.MediaPlayer.CurrentPosition;//alert("isAvailable:"+document.MediaPlayer.isAvailable("CurrentPosition"));/*vartemp='5';alert(CurrentPosition+":"+temp);if(CurrentPosition<temp){alert("buffering~!!");document.MediaPlayer.Pause();document.MediaPlayer.Buffering(true);}*/}setInterval("currentPosition()",3000);functionresize(){varrate=1.34;document.getElementById("MediaPlayer").height=parent.frames['resPlay'].document.body.clientHeight-145;document.getElementById("MediaPlayer").width=(parent.frames['resPlay'].document.body.clientHeight-145)*rate;if(document.getElementById("MediaPlayer").height<400){document.getElementById("MediaPlayer").width=600;document.getElementById("MediaPlayer").height=420;}}functionshowPlayWay(){varshowFlag='0';if(showFlag=='1'){document.MediaPlayer.Stop();;varflag=window.showModalDialog('codsrv!IsPlayWay.action','','dialogWidth:1024px;dialogHeight:900px;dialogLeft:10px;dialogTop:10px;help:no',window);document.MediaPlayer.Play();if(flag==1){setTimeout("PositionChange(currentposit)",500);}else{PositionChange(0);}}}//请等待document.write('<divid="doing"style="position:absolute;background:#f2f2f2;color:#f00;border:solid3px#CCC;width:300px;height:100px;left:30%;top:30%;"><tablealign="center"><tr><td> </td></tr><tr><td>请等待。。。</td></tr><tr><tdalign="center"><imgsrc="common-images/resource/loader.gif"width="32"height="32"></td></tr></table></div>');</script><scriptlanguage="javascript"for="MediaPlayer"event="EndOfStream()">playofEnd=1;</script></head><bodyonresize="resize();"><tablewidth="100%"border="0"cellspacing="0"cellpadding="0"><tr><tdalign="center"class="STYLE2">正在播放</td></tr><tr><tdalign="center"valign="middle"id="vga"colspan="2"><objectclassid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95"id="MediaPlayer"width="700"height="528"><paramname="ShowControls"value="true"><paramname="EnablePositionControls"value="true"><paramname="EnableFullScreenControls"value="true"><paramname="EnableTracker"value="0"><paramname="AutoRewind"value="true"><paramname="ShowStatusBar"value="true"><paramname="BufferingTime"value="15000"><paramname="ShowPositionControls"value="true"><paramname="AutoStart"value="true"><paramname="CanSeek"value="true"><paramname="SRC"value="http://*****.cn:80//uploads//%E4%BA%A7%E5%93%81%E5%8F%8A%E6%96%B9%E6%A1%88%E8%83%BD%E5%8A%9B/%E4%B8%93%E4%B8%9A%E5%AE%9E%E6%96%BD/U8/1ACGGL12004%E9%87%87%E8%B4%AD%E4%BB%B7%E6%A0%BC%E7%AE%A1%E7%90%86.wmv"></object></td></tr></table></body></html><scriptlanguage="javascript">//varcurrentposit='5';setTimeout("PositionChange(currentposit)",1000);</script>
其中有个object标签的srchttp://******.wmv,这个是我想要的内容目前用的代码如下(网页必须用账号登录才可以播放视频)SHDocVw.ShellWindowsshellWindows=newSHDocVw.ShellWindowsClass();foreach(SHDocVw.InternetExploreriwinshellWindows){mshtml.HTMLDocumentClassdoc=(mshtml.HTMLDocumentClass)iw.Document;mshtml.HTMLBodybody=(mshtml.HTMLBody)doc.body;stringhtml=body.innerHTML.ToString();mshtml.IHTMLElementimg=(mshtml.IHTMLElement)doc.all.item("MediaPlayer",0);
这里取到的html内容跟IE里F12看到的不一样,看不到mediaplayer的内容怎么能取到执行完JS的视频链接????
解决方案
解决方案二:
没做过,顶一下,LZ加油~
解决方案三:
body.outHTML.ToString();好像有这个。。。。
解决方案四:
引用2楼wawd74520的回复:
body.outHTML.ToString();好像有这个。。。。
这个取不到js动态加载完的数据
解决方案五:
引用3楼diaries的回复:
Quote: 引用2楼wawd74520的回复:
body.outHTML.ToString();好像有这个。。。。这个取不到js动态加载完的数据
酱紫啊。我也不知道了。看看这个
解决方案六:
分析js看他请求什么地址
解决方案七:
引用4楼wawd74520的回复:
Quote: 引用3楼diaries的回复:
Quote: 引用2楼wawd74520的回复:
body.outHTML.ToString();好像有这个。。。。这个取不到js动态加载完的数据
酱紫啊。我也不知道了。看看这个
不是一个语言....
解决方案八:
引用6楼diaries的回复:
Quote: 引用4楼wawd74520的回复:
Quote: 引用3楼diaries的回复:
Quote: 引用2楼wawd74520的回复:
body.outHTML.ToString();好像有这个。。。。这个取不到js动态加载完的数据
酱紫啊。我也不知道了。看看这个
不是一个语言....
///<summary>///获取源代码///</summary>///<returns></returns>publicstringGetHtml(boolSacn){stringTempStr="";//初始化所有IE窗口IShellWindowssw=newShellWindowsClass();for(inti=sw.Count-1;i>=0;i--){//得到每一个IE的IWebBrowser2对象IWebBrowser2iwb2=sw.Item(i)asIWebBrowser2;//比对得到的句柄是否符合查找的窗口句柄if(iwb2!=null&&iwb2.HWND==IEHandle){Document=(HTMLDocumentClass)iwb2.Document;if(Sacn)if((Document==null||Document.title==null||Document.title!=HeadTitle)&&!Document.title.Contains(BadHeadTitle)){continue;}iwb2.StatusBar=false;//状态栏SendMessage(newIntPtr(iwb2.HWND),274,61488,0);if(Document==null)return"";if(Document.title=="百度一下,你就知道"||Document.title=="360搜索-干净、安全、可信任的搜索引擎")TempStr="<!doctypehtml>"+((HTMLDocumentClass)iwb2.Document).documentElement.outerHTML;elseTempStr=((HTMLDocumentClass)iwb2.Document).documentElement.outerHTML;try{HeighBro=((IHTMLElement2)Document.body).scrollHeight;}catch{}break;}}returnTempStr;}
改改。试试。
解决方案九:
你说的这个问题我也遇到过,就是动态生成的代码获取问题,目前我没找到好的办法,不过你把上一个页面代码发来看看,能不能分析出来,我看过网上说用代码模拟Post发送请求可以获取动态生成的代码,但我还没解决
解决方案十:
引用7楼wawd74520的回复:
Quote: 引用6楼diaries的回复:
Quote: 引用4楼wawd74520的回复:
Quote: 引用3楼diaries的回复:
Quote: 引用2楼wawd74520的回复:
body.outHTML.ToString();好像有这个。。。。这个取不到js动态加载完的数据
酱紫啊。我也不知道了。看看这个
不是一个语言....
///<summary>///获取源代码///</summary>///<returns></returns>publicstringGetHtml(boolSacn){stringTempStr="";//初始化所有IE窗口IShellWindowssw=newShellWindowsClass();for(inti=sw.Count-1;i>=0;i--){//得到每一个IE的IWebBrowser2对象IWebBrowser2iwb2=sw.Item(i)asIWebBrowser2;//比对得到的句柄是否符合查找的窗口句柄if(iwb2!=null&&iwb2.HWND==IEHandle){Document=(HTMLDocumentClass)iwb2.Document;if(Sacn)if((Document==null||Document.title==null||Document.title!=HeadTitle)&&!Document.title.Contains(BadHeadTitle)){continue;}iwb2.StatusBar=false;//状态栏SendMessage(newIntPtr(iwb2.HWND),274,61488,0);if(Document==null)return"";if(Document.title=="百度一下,你就知道"||Document.title=="360搜索-干净、安全、可信任的搜索引擎")TempStr="<!doctypehtml>"+((HTMLDocumentClass)iwb2.Document).documentElement.outerHTML;elseTempStr=((HTMLDocumentClass)iwb2.Document).documentElement.outerHTML;try{HeighBro=((IHTMLElement2)Document.body).scrollHeight;}catch{}break;}}returnTempStr;}
改改。试试。
貌似还是取不到
解决方案十一:
引用8楼SmileSkyNet的回复:
你说的这个问题我也遇到过,就是动态生成的代码获取问题,目前我没找到好的办法,不过你把上一个页面代码发来看看,能不能分析出来,我看过网上说用代码模拟Post发送请求可以获取动态生成的代码,但我还没解决
可发字数有限,如果你想看现在具体能取到的源码可以看这里http://q.cnblogs.com/q/68302/
解决方案十二:
try{Regexr=newRegex(@"<img[sS]*?>",RegexOptions.IgnoreCase);stringtxt=string.Empty;MatchCollectioncol=r.Matches(Content);returncol[numbers].ToString();}catch(Exception){returnstring.Format("<imgsrc="{0}"/>",erroUrl);}
我的是这样写的,你修改一下就可以用了..我取的是img你取wmv
解决方案十三:
引用11楼VisualTeam的回复:
try{Regexr=newRegex(@"<img[sS]*?>",RegexOptions.IgnoreCase);stringtxt=string.Empty;MatchCollectioncol=r.Matches(Content);returncol[numbers].ToString();}catch(Exception){returnstring.Format("<imgsrc="{0}"/>",erroUrl);}我的是这样写的,你修改一下就可以用了..我取的是img你取wmv
现在的问题是我自己的源码取到不带wmv的,用浏览器的F12看到是有wmv链接的,可能是我取到的源码需要js执行输出视频的链接