http://show.qq.com/my/inc/friend_user_info.html?uin=123456
如何获取页面上[已开通]?来判断是否某钻会员?
 Memo1.Lines.Text :=IDHttp1.Get('http://show.qq.com/my/inc/friend_user_info.html?uin='+Edit1.Text);
小弟没弄过,只知道做到这一步,请各位指点指点

解决方案 »

  1.   

    var
      ret: string;  ret := IDHttp1.Get('http://show.qq.com/my/inc/friend_user_info.html?uin='+Edit1.Text);
      if Pos('红钻贵族:已开通', ret) > 0 then
        ShowMessage('红钻贵族已经开通');
      

  2.   

    1楼的方法是行不通的, 看一下返回的HTML就明白了, 根本不存在'红钻贵族:已开通'这个字符串的。
      

  3.   

    谢谢二楼的。能否帮看看。我是因为不懂分析它HTML  它的vip  viphome  vipgame是怎么来的 
     
    function init()
    {  
    var uin =  parseInt(getURLParam("uin"));
    function getSucc(x)
    {   //alert(x.xml)
    document.getElementById("ID_name").innerHTML= x.getElementsByTagName("node")[0].getAttribute("nick").escHtml();
    document.getElementById("ID_uin").innerHTML = uin;
    document.getElementById("ID_show").innerHTML =QQSHOW_avShow(x.getElementsByTagName("node")[0].getAttribute("show"),140,226);;
    document.getElementById("ID_rand_href").href="/my/inc/friend_rank.html?uin="+uin;

    if ( x.getElementsByTagName("node")[0].getAttribute("vip")==1)
    {
    document.getElementById("ID_red").innerHTML= "已开通";
    }

    if ( x.getElementsByTagName("node")[0].getAttribute("viphome")==1)
    {
    document.getElementById("ID_yellow").innerHTML= "已开通";
    }
    if ( x.getElementsByTagName("node")[0].getAttribute("vipgame")==1)
    {
    document.getElementById("ID_blue").innerHTML= "已开通";
    }
      

  4.   

    这个用IdHTTP蛮难实现的,换成WebBrowser就方便多了。
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      tmrAfterComplete.Enabled := False;
      tmrAfterComplete.Interval := 100;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      tmrAfterComplete.Enabled := False;
      WebBrowser1.Navigate(''http://show.qq.com/my/inc/friend_user_info.html?uin='+Edit1.Text);
    end;procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;  const pDisp: IDispatch; var URL: OleVariant);
    begin
      //在DocumentComplete之后打开一个定时器, 以便让Document内的脚本有机会执行完毕
      tmrAfterComplete.Enabled := True;
    end;procedure TForm1.tmrAfterCompleteTimer(Sender: TObject);
    begin
      tmrAfterComplete.Enabled := False;
      //现在可以通过getElementByID来获取所需的文字了
      Memo1.Lines.Add('红: ' + WebBrowser1.OleObject.document.getElementByID('ID_red').innerText);
      Memo1.Lines.Add('黄: ' + WebBrowser1.OleObject.document.getElementByID('ID_yellow').innerText);
      Memo1.Lines.Add('蓝: ' + WebBrowser1.OleObject.document.getElementByID('ID_blue').innerText);
    end;
      

  5.   

    抱歉。刚刚没DELPHI,没仔细测试。现在重新补个。var
      ret: string;  ret := IDHttp1.Get('http://show.qq.com/my/inc/friend_user_info.html?uin='+Edit1.Text);
      if Pos('document.getElementById("ID_red").innerHTML= "已开通";', ret) > 0 then
        ShowMessage('红钻贵族已经开通');
      

  6.   


    你这个代码还是错误的。
    'document.getElementById("ID_red").innerHTML= "已开通";' 是这个网页脚本中的一部分, 这部分是永远存在的。
      

  7.   


    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; 
    const pDisp: IDispatch; var URL: OleVariant); 
    begin 
    //在DocumentComplete之后打开一个定时器, 以便让Document内的脚本有机会执行完毕 
    if WebBrowser1.Application = pDisp then 
    begin 
    // Text := '网页下载完毕!'; 
    tmrAfterComplete.Enabled := True; 
    end; 
    end; 
    tmrAfterComplete还没加载完毕就执行了,导致有时候数据出错。修改tmrAfterComplete的间隔是可以泥补这BUG,但会导致查得慢。请问怎么让WebBrowser1全部加载完毕再执行tmrAfterComplete里的事件呢
      

  8.   


    这一段代码你有没有写上?procedure TForm1.FormCreate(Sender: TObject);
    begin
      tmrAfterComplete.Enabled := False;
      tmrAfterComplete.Interval := 100;
    end;