程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> IXMLHTTPRequest獲取網頁源碼的心得,request獲取url

IXMLHTTPRequest獲取網頁源碼的心得,request獲取url

編輯:Delphi

IXMLHTTPRequest獲取網頁源碼的心得,request獲取url


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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved