![TTHX7%CWPQMTVV]7`M]VV.png](https://img-blog.csdnimg.cn/img_convert/85ce59a9d003066be579b32e79feddfc.png)
delphi 使用 idHTTP 获取 UTF-8 编码的中文网页
procedure TForm2.Button1Click(Sender: TObject);
var
IdHttp1: TIdHTTP;
Url,s,ResponseStr: string;//请求地址
ResponseStream : TStringStream; //返回信息
RequestList : TStringList; //请求信息
RequestStream : TStringStream;
begin
//创建IDHTTP控件
IdHttp1:= TIdHTTP.Create(nil);
//TStringStream对象用于保存响应信息
ResponseStream := TStringStream.Create('',TEncoding.UTF8); // 这里的('',TEncoding.UTF8) 很重要 。如果没有,会造成局部乱码(在线编辑器的‘器’,字体会乱码)。
RequestStream := TStringStream.Create('');
RequestList := TStringList.Create;
idhttp1.HandleRedirects:=true; //这行去掉后,不能正常运行
//idhttp1.Request.ContentType := 'application/x-www-form-urlencoded'; //没这行,会造成流的方式无法提交成功,列表式提交没有影响
url := 'http://www.ewebeditor.net/ewebeditor/admin/login.asp?action=login';
//以列表的方式提交参数
RequestList.Add('h=www.ewebeditor.net');
RequestList.Add('pwd=AdminTest');
RequestList.Add('usr=AdminTest');
IdHttp1.Post(url,RequestList,ResponseStream);
// RequestStream.WriteString('h=www.ewebeditor.net&pwd=admin&usr=admin'); //以流的方式提交参数
// IdHttp1.Post(Url,RequestStream,ResponseStream);
// IdHttp1.get('http://www.ewebeditor.net/ewebeditor/admin/default.asp',ResponseStream);
// IdHttp1.get('http://www.ewebeditor.net/ewebeditor/admin/main.asp',ResponseStream);
//
// IdHttp1.get('http://www.ewebeditor.net/ewebeditor/admin/menu.asp',ResponseStream);
//获取网页返回的信息
ResponseStr := ResponseStream.DataString;
//网页中的存在中文时,需要进行UTF8解码
showmessage(ResponseStr);
//s := UTF8Decode(ResponseStr);
// s := AnsiToUtf8(ResponseStr);
//showmessage(s);
IdHttp1.Free;
RequestList.Free;
RequestStream.Free;
ResponseStream.Free;
{
http://www.ewebeditor.net/ewebeditor/admin/login.asp 登录名admin 密码admin
经过火狐浏览器F12抓包,取得POST的网址,和提交的三个参数,就可以了
}
end;
delphi 使用 nethttpclient1 获取 UTF-8 编码的中文网页
procedure TForm2.Button2Click(Sender: TObject);
var
Url,s,ResponseStr: string;//请求地址
ResponseStream : TStringStream; //返回信息
RequestList : TStringList; //请求信息
RequestStream : TStringStream;
begin
//TStringStream对象用于保存响应信息
ResponseStream := TStringStream.Create('',TEncoding.UTF8); // 这里的('',TEncoding.UTF8) 很重要 。如果没有,会造成局部乱码(在线编辑器的‘器’,字体会乱码)。
RequestStream := TStringStream.Create('');
RequestList := TStringList.Create;
nethttpclient1.ContentType := 'application/x-www-form-urlencoded'; //没这行,会造成流的方式无法提交成功,列表式提交没有影响
Url := 'http://www.ewebeditor.net/ewebeditor/admin/login.asp?action=login';
{ //以列表的方式提交参数
RequestList.Add('h=www.ewebeditor.net');
RequestList.Add('pwd=admin');
RequestList.Add('usr=admin');
nethttpclient1.Post(url,RequestList,ResponseStream);
}
RequestStream.WriteString('h=www.ewebeditor.net&pwd=AdminTest&usr=AdminTest'); //以流的方式提交参数
// RequestStream.Seek(0,tseekorigin.sobeginning);
RequestStream.position:=0; //如果使用nethttpclient控件用流的方式提交,那么需要将起始置为0,要启用这一句或上面那一句,列表式提交没影响
nethttpclient1.Post(Url,RequestStream,ResponseStream);
// nethttpclient1.get('http://www.ewebeditor.net/ewebeditor/admin/default.asp',ResponseStream);
// nethttpclient1.get('http://www.ewebeditor.net/ewebeditor/admin/main.asp',ResponseStream);
// nethttpclient1.get('http://www.ewebeditor.net/ewebeditor/admin/menu.asp',ResponseStream);
//获取网页返回的信息
ResponseStr := ResponseStream.DataString;
//网页中存在中文时,需要进行UTF8解码
// s:= UTF8Decode(ResponseStr);
showmessage(ResponseStr);
nethttpclient1.Free;
RequestList.Free;
RequestStream.Free;
ResponseStream.Free;
{
http://www.ewebeditor.net/ewebeditor/admin/login.asp 登录名admin 密码admin
经过火狐浏览器F12抓包,取得POST的网址,和提交的三个参数,就可以了
}
end;
python 获取 UTF-8 编码的中文网页
import urllib.request,requests
url="http://www.ewebeditor.net/ewebeditor/admin/login.asp?action=login"
data= {
'h': 'www.ewebeditor.net',
'pwd': 'AdminTest',
'usr': 'AdminTest',
}
#get方法
#print requests.get(url, data=data).text
#post方法, data 可以是字符串等
dd=requests.post(url, data=data)
dd.encoding
dd.apparent_encoding
ff=dd.text.encode(dd.encoding).decode(dd.apparent_encoding)
print(ff)
![CX]K}KNT45MH04~5NR(1827.png](https://img-blog.csdnimg.cn/img_convert/6cb6d5053d670e1a8fc3049d8b086781.png)