⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 检测URL有效工具(批量检测)检测 URL有效工具(批量检测)
💻 PAS
字号:
unit Unit2;

interface

uses
  Classes,StdCtrls,Windows,SysUtils,IdHTTP,WinInet;

var
  CS:TRTLCriticalSection;   //定义全局临界区

type
  T1 = class(TThread)
  procedure AlexaGet(num:integer);
  private
    TmpM1,TmpM2: TMemo;
    TmpNum: integer;
    //procedure AlexaGet(num:integer);
  protected
    procedure Execute; override;
  public
    constructor Create(M1,M2: TMemo; Num: integer);
  end;

//procedure AlexaGet(num:integer);

implementation

uses Unit1;

{ T1 }

constructor T1.Create(M1,M2: TMemo; Num: integer);
begin
  TmpNum := Num; // 传递参数
  TmpM1 :=M1;    // 绑定控件
  TmpM2 :=M2;
  FreeOnTerminate := True; // 自动删除
  //InitializeCriticalSection(CS); //初始化临界区
  inherited Create(False); // 直接运行
end;
function GetWebPage(const Url: string):string;
var
 Session,
 HttpFile:HINTERNET;
 szSizeBuffer:Pointer;
 dwLengthSizeBuffer:DWord;
 dwReserved:DWord;
 dwFileSize:DWord;
 dwBytesRead:DWord;
 Contents:PChar;
begin
 Session:=InternetOpen('',0,niL,niL,0);
 HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
 dwLengthSizeBuffer:=1024;
 HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
 GetMem(Contents,dwFileSize);
 InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead); 
 InternetCloseHandle(HttpFile);
 InternetCloseHandle(Session);
 Result:=StrPas(Contents);
 FreeMem(Contents);
end;

procedure T1.Execute;
begin
  //EnterCriticalSection(cs);
  if terminated then exit;
   AlexaGet(TmpNum);      //进入临界区
  //LeaveCriticalSection(CS);      //退出临界区
  //sleep(20); //线程挂起;
end;

{procedure AlexaGet;
var
  Search: TidHttp;
  Values,url,Alexaurl: String;
  snum,enum,i: integer;
begin
  try
    Search:= Tidhttp.Create(nil);
    Search.ReadTimeout:= 30000;
    for i:=1 to Form1.Memo1.Lines.Count do
    begin
      Application.ProcessMessages;
      url:= Form1.memo1.Lines[i];
      if (pos('net',Form1.memo1.Lines[i])>0) or (pos('com',Form1.memo1.Lines[i])>0) then
      begin
        snum:= pos('.',Form1.memo1.Lines[i]);
        url:= copy(url,1,snum+4);
      end;
      Alexaurl:= 'http://data.alexa.com/data?cli=10&dat=snba&url='+url;
      try
        Values:= Search.Get(Alexaurl);
      except
        break;
      end;
      Form1.ProgressBar1.StepIt;
      if (pos('POPULARITY',values)>0) then
      begin
        snum:= pos('POPULARITY',values);
        Values:= copy(values,snum,length(values)-snum);
        snum:= pos('TEXT',values);
        enum:= pos('/>',values);
        Values:= copy(values,snum+6,enum-snum-7);
        Form1.Memo2.lines.add(url+' 排名为:'+values);
      end;
      Form1.GroupBox2.Caption:= '已经检测完'+inttostr(i)+'个网址';
    end;
  finally
  Search.Free;
  end;
end;}

procedure T1.AlexaGet(num:integer);
var
  Search: TidHttp;
  Values,url,Alexaurl: String;
  snum,enum,i: integer;
begin
  try
    i:= num;
    //Search.ReadTimeout:= 30000;
    url:= TmpM1.Lines[i];
    {if (pos('net',Form1.memo1.Lines[i])>0) or (pos('com',Form1.memo1.Lines[i])>0) then
    begin
      snum:= pos('.',Form1.memo1.Lines[i]);
      url:= copy(url,1,snum+4);
    end;}
    try
      Search:= Tidhttp.Create(nil);
      Alexaurl:= url;
      Values:= GetWebPage(Alexaurl);
    except
    Search.Free;
    end;
    Form1.ProgressBar1.StepIt;
    if (pos('input',values)>0) and (pos('<!DOCTYPE HTML PUBLIC',values)=0)then
    begin
     // snum:= pos('POPULARITY',values);
      //Values:= copy(values,snum,length(values)-snum);
      //snum:= pos('TEXT',values);
      //enum:= pos('/>',values);
      //Values:= copy(values,snum+6,enum-snum-7);
       TmpM2.lines.add(url);
    end;

  finally
  Search.Free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -