Delphi通过URL获取网页源码


本文整理自网络,侵删。

 一个直接通过URL获取网页源码的例子,与使用TWebbrowser获取网页源码不同,该方法的优点是不需要加载网页直接获取HTML代码,如果网页中图片和媒体较多,使用TWebbrowser加载网页然后再获取源码速度就太慢了,该方法也有一个缺点,函数调用返回前,程序会无法响应其他消息而导致程序无法更新界面。

uses WinInet, Classes, Windows;

function UrlGetStr(const URL: string; ShowHeaders: boolean = false): string;
const
  Agent = 'Internet Explorer 6.0';
var
  hFile, HInet: HINTERNET;
  Buffer: array[0..32767] of Char;
  BufRead: Cardinal;
  BufSize: Cardinal;
  TempStream: TStringStream;
  dwIndex: dword;
begin
  HInet := InternetOpen(PChar(Agent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(HInet) then
  try
    hFile := InternetOpenUrl(HInet, PChar(URL), nil, 0, 0, 0);

    TempStream := TStringStream.Create('');

    dwIndex := 0;
    BufSize := SizeOf(Buffer);

    HttpQueryInfo(hfile, HTTP_QUERY_RAW_HEADERS_CRLF, @Buffer, BufSize, dwIndex);

    if ShowHeaders then TempStream.Write(Buffer, BufSize);

    if Assigned(hFile) then
    try
      with TempStream do
      try
        while InternetReadFile(hFile, @Buffer, BufSize, BufRead) and (BufRead > 0) do
          Write(Buffer, BufRead);
        Result := DataString;
      finally
        Free;
      end;
    finally
      InternetCloseHandle(hFile);
    end;
  finally
    InternetCloseHandle(hinet);
  end;
end;

相关阅读 >>

Delphi wm_copydata的应用

Delphi 网上获取北京时间xmlhttprequest如何访问需要安全验证的网站

Delphi webbrowser 跨域访问

精通Delphi模拟按键

Delphi rest application 与 webbroker application 区别

Delphi研究之驱动开发篇(五)--使用后备列表

Delphi is 与 as 运算符举例

Delphi 获取当前目录下的.txt文本不要带后缀扩展名

Delphi xe10实现移动端支付宝、微信支付接口

Delphi中使用xmlhttp / xmlhttprequest 避免缓存

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...