如何从Delphi获得网站标题?

gul*_*kin 2 delphi

我不想使用twebbrowser,任何人都知道获得网站标题的其他方法吗?

RRU*_*RUZ 11

您可以使用InternetOpenUrlInternetReadFile功能获取网页的内容,然后搜索<title>标记.

检查此示例应用.

程序GetTitleHTML;

{$APPTYPE CONSOLE}

uses
  WinInet,
  StrUtils,
  SysUtils;

function GetHTMLTitle(const Url:string):string;
const
BuffSize     = 64*1024;
TitleTagBegin='<title>';
TitleTagEnd  ='</title>';
var
  hInter   : HINTERNET;
  UrlHandle: HINTERNET;
  BytesRead: Cardinal;
  Buffer   : Pointer;
  i,f      : Integer;
begin
  Result:='';
  hInter := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(hInter) then
  begin
    GetMem(Buffer,BuffSize);
    try
       UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD,0);
       try
        if Assigned(UrlHandle) then
        begin
          InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead);
          if BytesRead>0 then
          begin
            SetString(Result, PAnsiChar(Buffer), BytesRead);
            i:=Pos(TitleTagBegin,Result);
            if i>0 then
            begin
              f:=PosEx(TitleTagEnd,Result,i+Length(TitleTagBegin));
              Result:=Copy(Result,i+Length(TitleTagBegin),f-i-Length(TitleTagBegin));
            end;
          end;
        end;
       finally
         InternetCloseHandle(UrlHandle);
       end;
    finally
      FreeMem(Buffer);
    end;
    InternetCloseHandle(hInter);
  end
end;

begin
  try
     Writeln(GetHTMLTitle('http://stackoverflow.com/questions/4966888/how-to-get-website-title-from-delphi'));
     Writeln(GetHTMLTitle('http://www.google.com/'));
     Writeln(GetHTMLTitle('http://stackoverflow.com/questions/tagged/delphi'));
     Readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.
Run Code Online (Sandbox Code Playgroud)

  • 当心对您可以访问的网站/页面做出假设。仅仅因为用户可以进入他们的 facebook、gmail、wallstreetjournal 等,并不意味着你也可以在没有身份验证的情况下这样做。 (2认同)

Jer*_*ers 5

这完全取决于网站如何设置标题.

<title>标签是不是唯一的方法,你也有JavaScript等

最好是将页面封装在Web浏览器中(例如TWebBrowser),然后从那里获取标题.

这个页面上有一些引导.

--jeroen