IXMLHTTPRequest获取网页源码的心得

在万一老师的博客看到一种利用IXMLHTTPRequest来获取网页源码的方法,但有2个问题没解决,自己研究了下改进了方法。

1.如果网页进行301转跳将无法获取源码

2.如果网站是gb2312编码将获取的是乱码

/////以下方法使用的是Delphi xe2编写

uses MsXML,activex;

function GETHTML (const URL : string):string; // XMLHTTP接口
Var
XMLHTTP:IServerXMLHTTPRequest;
HTML:TBytes;
begin
try
CoInitializeEx(nil,COINIT_MULTITHREADED);
XMLHTTP:=CoServerXMLHTTP.Create;         //使用CoServerXMLHTTP则能进行301转跳,CoXMLHTTP不能转跳
XMLHTTP.open(‘GET‘,URL,False,EmptyParam,EmptyParam);
XMLHTTP.send(EmptyParam);

HTML:=XMLHTTP.responseBody;

//判断网页是否携带utf-8,没携带进行转换
if Pos(‘utf-8‘,StringOf(HTML)) > 0 then begin
Result:=TEncoding.Default.GetEncoding(65001).GetString(HTML);//把UTF8转STRING
Exit;
end;
Result:=TEncoding.Default.GetString(HTML);
finally
CoUnInitialize; // 释放内存
end;
end;

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。