想实现动态地监视当前页面中地具体内容,假如具体内容符合条件就动态地替换掉,例如:   
  网页页面中有1张来自CSDN地图片,俺要将它替换成1段文本。
奈何俺这方面的实力较差,才刚起步,不知道各位大大能否给俺一个例子之类的,先感谢下,听人家说,重新解析APP什么的可以,但是不知道怎么整

解决方案 »

  1.   

    忘记说了,我用的是delphi,想写成监控程序那种
      

  2.   

    执行
    javascript:document.body.contentEditable='true'; document.designMode='on'; void 0
    任意编辑网页再执行
    javascript:document.body.contentEditable='false'; document.designMode='off'; void 0
    保存编辑好的页面。你试试就知道了。IE里
      

  3.   

    看到你的留言了,目前正向学习这方面的东西,代码是没有了不过思路有1个1 delphi里面有个webbrowser,可以加载网页,同时,你可以更改他加载到的数据
    procedure DoChangePageCode(Doc: IDispatch);
     var
       tr: IHTMLTxtRange;
       s: string;
     begin
       tr := ((Doc as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
       s := tr.htmlText; // 取出页面的代码
       // 此处就能随意改了
       tr.pasteHTML(s); // 改完后的代码写回去
     end;2 如果你需要修改第三方浏览器例如ie,恐怕需要dll注入了,那么学一下钩子以及 textout这个函数吧,因为以前用的不多,你还是请教其他高人吧,这里有个例子,可以参考下
    http://apps.hi.baidu.com/share/detail/1973745
      

  4.   

    可以嘗試用delphi webbrowser組件或IHTMLDocument2加載其頁面,然後用javascript然取出值,然後再動態修改回去unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        Edit1: TEdit;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
      end;var
      Form1: TForm1;implementation{$R *.dfm}uses ComObj;{此函数需要 ComObj 单元的支持}
    {参数 JsCode 是要执行的 Js 代码; 参数 JsVar 是要返回的变量}
    function RunJs(const JsCode, JsVar: string): string;
    var
      script: OleVariant;
    begin
      try
        script := CreateOleObject('ScriptControl');
        script.Language := 'JavaScript';
        script.ExecuteStatement(JsCode);
        Result := script.Eval(JsVar);
      except
        Result := '';
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      s: string;
    begin
      s := RunJs(Memo1.Text, 'str');
      ShowMessage(s);
    end;end.
      

  5.   

    可插入异步协议(APP)应该可以,但是网上的示例都是C++的,而且只作用于一台计算机。如果你做解决方案的话,这个没什么用。一般的做法都是在网关级别就换掉了,到客户机器的时候已经是处理好的了。
      

  6.   


    如果是forms里的要怎么写呢
      

  7.   


    我想要的,也仅仅只是当前电脑而已,delphi下怎么实现呢
      

  8.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
      htmlDoc: IHTMLDocument2;
      FirstLink: IHTMLElement;
      allLinks: IHTMLElementCollection;
      url,urlStr: string;
    begin
      memo1.Clear;
      WebBrowser1.Navigate(Edit1.Text);
      while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
        Application.ProcessMessages;
      htmlDoc:= WebBrowser1.Document as IHTMLDocument2;
      allLinks:= htmlDoc.all;
      i:= allLinks.length;
      //ShowMessage(IntToStr(i));
      FirstLink:= allLinks.item(1,'') as IHTMLElement;
      url:= FirstLink.toString;
      urlStr:= FirstLink.innerHTML;
      urlStr:= StringReplace(urlStr,'贴吧','QQ',[rfReplaceAll]);
      FirstLink.innerHTML:= urlStr;
      Memo1.Lines.Add(urlStr);
    end;我这样写,可是在FirstLink.innerHTML:= urlStr;会报错,无法设置 innerHTML 属性。 该操作的目标元件无效请问应该如何写呢
      

  9.   

    看你上面寫的好像是要將第一個鏈接html語法中的貼吧改成QQ 是這個意思吧如果是三 句話便可:
    源html
    str1:=WebBrowser1.oleobject.document.links.item(1).innerhtml;
    替換:
    str1:=StringReplace(str1,'贴吧','QQ',[rfReplaceAll]);
    設置
    WebBrowser1.oleobject.document.links.item(1).innerhtml:=str1;
      

  10.   

    var
       links:variant;
       i:integer;
       linkstr:string;
    begin
       links:= wb.oleobject.document.links;
       for i:=0 to links.length-1 do begin
          linkstr:= links.item(i).innerhtml;
          linkstr:=StringReplace(linkstr,'贴吧','QQ',[rfReplaceAll]);
          links.item(i).innerhtml := linkstr;
       end;
       end;
    end;如此即可!
      

  11.   


    如果是页面的部分内容是通过js脚本生成的,一般html内容的替换就不起作用了
    需要对js执行后的内容进行替换
      

  12.   

    沒有什麼不能換的所看到的是IE下載網頁后解析給你看的。就算是JS或者其它動態產生的數據,只要有遠程的鏈接比如更換一張圖片WebBrowser都會有所反應。等它反應完成再進行替換操作即可你說的雙色球可能是文字非鏈接,也可能是圖片。要根據實際情況來判斷。不明白的可參考 http://hi.baidu.com/szba/blog/item/9a0e5c1eed0431fc1bd57697.html自己多嘗試。
      

  13.   

    網頁中間的快速投注那個雙色球就不是鏈接怎麼可能用這種方法完成呢!
    <LI id=yui_3_3_0_1_13167698376253849><SPAN id=yui_3_3_0_1_13167698376253848 
    class=ssq>双色球</SPAN> </LI> 
    <LI id=yui_3_3_0_1_1316769837625302><SPAN id=yui_3_3_0_1_1316769837625301 
    class=dlt>大乐透</SPAN> </LI>