CString strUrl="http://s.jipiao.trip.taobao.com/flight_search_result.htm?_fmh.fl._0.s=%B3%C9%B6%BC&=CTU&_fmh.fl._0.e=%C9%EE%DB%DA&=SZX&_fmh.fl._0.t=0&_fmh.fl._0.sta=2011-09-16&_fmh.fl._0";CHttpFile * myHttpFile=NULL; 
CString myData;
CString my_Web;
DWORD   dwFlags   =   INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_RELOAD; 
myHttpFile=(CHttpFile*)mySession.OpenURL(strUrl,1,dwFlags); 
while (myHttpFile->ReadString(myData)) 

my_Web+=myData; 

myHttpFile->Close(); 
mySession.Close(); 小弟在做 淘宝的机票搜索程序,之前用(CHttpFile*)mySession.OpenURL()能顺利下载淘宝网页的数据,但是现在淘宝网做了技术更新,地址和机票查询后的结果并未变换,但是在出机票查询结果前 加载了个LOADING页面,现在我(CHttpFile*)mySession.OpenURL()就只能获取到LOADING得页面数据,而后面的机票查询的结果却无法获取,请问有什么办法可以获取到查询结果的页面。我试过了,用WebBrowser 导入该网址,先是LOADING页面,最后出现结果数据界面,而用session.openurl()却获得的是LOADING页面,如何才能获取到loading之后的页面?请高手指教!!!示范网络地址:
http://s.jipiao.trip.taobao.com/flight_search_result.htm?_fmh.fl._0.s=%B3%C9%B6%BC&=CTU&_fmh.fl._0.e=%C9%EE%DB%DA&=SZX&_fmh.fl._0.t=0&_fmh.fl._0.sta=2011-09-16&_fmh.fl._0以上地址,浏览器打开是 先LOADING,然后是成都 - 深圳的航班信息。

解决方案 »

  1.   

    估计loading页面是个慢过程,而服务器最后返回个302.
    你程序判断一下服务器是否返回了重定向,如果重定向你就再取一次。
      

  2.   

    大侠,按照你的说法,我再取了 几次,还是获得的是LOADING页面,无法获得到真正的数据页面。加了个判断是否打开完成,也是获得的loading页面,郁闷了
    DWORD dwStatusCode;
    myHttpFile-> QueryInfoStatusCode(dwStatusCode);
    if(dwStatusCode == HTTP_STATUS_OK)
    {
    while (myHttpFile->ReadString(myData)) 

    my_Web+=myData; 

    }
      

  3.   

    我在想,既然WebBrowser 打开该网址,那我可不可以用WebBrowser 来获取网络数据。
      

  4.   

    看看网页结构,如果根节点的url一直不变,最终你要的web页面是否在frame里
      

  5.   

    网页 根节点没发生变化.通过浏览器浏览该网地址。首先是整个 页面都是LOADING,正在为你加载航班信息...<html>
    <head>
    <script>
    var UA_Opt = new Object;
    UA_Opt.FormId = "user_action";
    UA_Opt.Token = "lst"+new Date().getTime()+":" + Math.random();
    UA_Opt.SendMethod = 1;
    UA_Opt.Flag = 129022;function goToList(){
              var form = document.getElementById("user_action");
              //form.setAttribute("action", decodeURIComponent(window.location.href));
              form.setAttribute("action", window.location.href);
              form.submit();
    }
    </script>
    <script src="http://acjs.aliyun.com/actionlog/js/ua.js"></script></head>
    <body onload="goToList()">
    <script type="text/javascript">
    (function(){function atrand(num){return Math.floor(Math.random()*num)+1}var P=location.pathname;if((parent===self)||P.indexOf('/list_forum')!=-1||P.indexOf('/theme/info/info')!= -1||P.indexOf('/promo/co_header.php')!= -1||P.indexOf('fast_buy.htm')!= -1||P.indexOf('/add_collection.htm')!= -1||P.indexOf('/taobao_digital_iframe')!= -1||window.tbdw_frame_count==true){var R=escape(document.referrer);document.write('<img src="http://www.atpanel.com/1.gif?cache='+atrand(9999999)+'&pre='+R+'&scr='+screen.width+'x'+screen.height+'&category=&userid=&channel=112&ad_id=" width="0" height="0" style="display:none;" />')}})();
    </script><script type="text/javascript">
    (function(){function akrand(num){return Math.floor(Math.random()*num)+1}var P=location.pathname;if((parent===self)||P.indexOf('/list_forum')!=-1||P.indexOf('/theme/info/info')!= -1||P.indexOf('/promo/co_header.php')!= -1||P.indexOf('fast_buy.htm')!= -1||P.indexOf('/add_collection.htm')!= -1||P.indexOf('/taobao_digital_iframe')!= -1||window.tbdw_frame_count==true){var R=escape(document.referrer);var acookie_load_id=""+akrand(9999999999)+akrand(9999999999);var isv_title=escape(document.title);document.write('<img src="http://acookie.taobao.com/1.gif?acookie_load_id='+acookie_load_id+'&title='+isv_title+'&pre='+R+'&category=&userid=&channel=112&ad_id=" width="0" height="0" style="display:none;" />')}})();
    </script><style type="text/css"> 
    /* 通用 */
    html, body, p, img ,div {margin: 0;padding: 0;border:none;}
    body{font:12px/1.67em "arial";text-align:center;  }
    .loading{width:463px;height:205px;overflow:hidden; zoom:1;background:url(http://img02.taobaocdn.com/tps/i2/T1BIB8XklmXXXXXXXX-463-205.png) no-repeat;margin:15% auto 0;}
    .loading-box{margin-top:80px;}
    .loading-box img{display:block; margin:0 auto;}
    .loading-box p{padding:0 0 0 3px;width:460px;text-align:center; }
    </style>
    <div class="loading">
       <div class="loading-box">
          <img src="http://img04.taobaocdn.com/tps/i4/T1WpaaXdNmXXXXXXXX-155-11.gif"  alt="" />
          <p>正在为您加载国内航班信息...</p>
       </div>
    </div>
    <form id="user_action" action="#"  method="post"></form>
    </body>
    </html>然后才是机票数据,并且数据没有嵌在FRAME里。
      

  6.   

    可以用Webbrowser,这样可以等AJAX加载完页面后,你判断OnDocumentComplete等事件来获取真正的数据页面加载完成,然后get_Document()获取所有的DOM数据
      

  7.   

    java实现比较简单吧,rihno可以进行js运算,把相关js执行一次,把要用的数据得到就成吧!