在萬一老師的博客看到一種利用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;