`
buliedian
  • 浏览: 1197956 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

delphi网页数据抓取

 
阅读更多
简单:
IdHttp:TIdHttp;
Params:TStrings;

Begin
Params:=TStrinList.Create;
IdHttp:=TIdHttp.Create(Nil);
//提交网页的参数
Params.Add('参数1=XXX');
Params.Add('参数2=YYY');
Try
IdHttp.Get('你要的网址',Params);
Memo1.Text:=
Finlly
Params.Free;
IdHttp.Free;
end;
{你分析Memo1中的数据}
{将数据保存至数据库}
end;



function TLisReport.DownloadFile(const remoteurl: string; Stream: TStream;
DownloadTitle: string): Boolean;

var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
BytesRead: DWORD;
Buffer: array[1..8192] of Char;
HaveRead: DWORD;

lpdwlen, lpdwidx, lpdword: DWord;

begin
Result := false;
NetHandle := InternetOpen(
'htmlcopy for Lis',
INTERNET_OPEN_TYPE_DIRECT,
nil,
nil,
0);
if Assigned(NetHandle) then begin
UrlHandle := InternetOpenUrl(
NetHandle,
PChar(remoteurl),
nil,
0,
INTERNET_FLAG_RELOAD,
0);
if Assigned(UrlHandle) then
begin
HaveRead := 0;
lpdword := 0;
lpdwlen := 4;
lpdwidx := 0;

HttpQueryInfo(UrlHandle, HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER, @lpdword, lpdwlen, lpdwidx);

repeat
FillChar(Buffer, 8192, 0);
InternetReadFile(UrlHandle, @Buffer[1], SizeOf(Buffer), BytesRead);
Stream.Write(Buffer[1], bytesread);
HaveRead := HaveRead + bytesread;
hintProgress(DownloadTitle, round(HaveRead * 100 / lpdword));

until BytesRead = 0;

result := true;
hintProgress(DownloadTitle, 0);

end;
InternetCloseHandle(UrlHandle);
end;
InternetCloseHandle(NetHandle);
end;
无外乎两种方法:
1用http的控件来POST或者GET,这里要注意NMHTTP在POST时有缺陷,论坛里有论述,建议用ICS或者INDY
2用IHTMLDOCUMENT2来做,这种方法就是通过IE接口在程序里面进行提交
我曾经为某个网上评选活动,两种投票器都作过,很简单的

我用的是 Delphi 7 和 Indy 的 TidHttp 控件
对于有Session的主页进行 Post时,会出现过期等字样
下面是程序,求高手指点
//----------------------------------------------------
procedure TMainForm.btnRunClick(Sender: TObject);
var
Source: TStrings;
Response: TMemoryStream;
S, Cookie: String;
i: integer;
begin
Response := TMemoryStream.Create;
Source := TStringList.Create;

S := Http.Get(Page1);
Memo1.Text := S;
// 从返回的页面中找出cookie, 并增加到http.Request中
for i := 0 to Http.Response.RawHeaders.Count -1 do
if UpperCase(LeftStr(Http.Response.RawHeaders[i], 10)) = 'SET-COOKIE' then
begin
Cookie := Trim(Copy(Http.Response.RawHeaders[i], 12, MaxInt));
Cookie := Copy(Cookie, 1, Pos(';', Cookie) - 1);
Http.Request.RawHeaders.Add('Cookie:'+ Cookie);
end;
// 再去下一页, 先准备数据
Source.Clear;
Source.Add('USERnumber=' + UserName + '&pwd=' + PassWord + '&UserType=0'
+ '&imageField2.x=19&imageField2.y=8');

Memo1.Text := Http.Post(Page2, Source);

Source.Free;
Response.Free;
//----------------------------------------------------



你可以通过这个链接引用该篇文章:http://chinamxm.bokee.com/viewdiary.13104228.html


分享到:
评论

相关推荐

    delphi网页数据提取工具

    delphi网页数据提取工具,

    delphi抓取网页数据

    delphi抓取122考试平台预约学员数据 ,方便提前知道预约情况

    delphi 网页采集之网址提取,内容提取,图片提取,网页源码

    delphi2010 及 delphi7 下 网页采集之网址提取,内容提取,图片提取,网页源码。 其中2010时,去掉一句注释即可。 用于网页分析的delphi源代码,可以提取网页中的连接、图片、内容等。 源代码非常简单,便于分析。

    网页数据自动抓取数据,自动填写

    自动抓取Salseforce.com页面信息到本地数据库,采用Delphi2010,可以进行不同页面数据间自动复制填写,采用IHTMLDocument2,提供关键代码

    dotnet-叶子浏览器基于Cef访问网页时自动抓取结构化xhr数据

    叶子浏览器,基于Cef,访问网页时自动抓取结构化xhr数据

    Delphi增强型剪贴板管理程序.rar

    Delphi增强型剪贴板管理程序,可以保存剪切板历史文本,可以快速填序列号,也可上网填表格,还能自动抓取网页文本,快速打开文件夹,快速打开网络地址,小型个人数据管理,显示桌面,支持系统托盘,自带delphi7源码。...

    Delphi编程大师2003 4of5

    利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 ...

    Delphi编程大师2003 2of5

    利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 ...

    Delphi编程大师2003 1of5

    利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 ...

    Delphi编程大师2003 5of5

    利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 ...

    Delphi编程大师2003 3of5

    利用Windows Socket API抓取网络上的网页的控件 系统信息控件 一个不错的RAS构件 最新版本的gifimage glad控件包for d5 拥有七种不同外观的改良版TCheckBox构件 平滑特效字体控件包 V2.2 用Xcl代替Delphi的Vcl控件 ...

    Delphi开发范例宝典目录

    实例191 在DELPHI中控制Word 246 实例192 带日志的程序 247 实例193 获取窗口文本 248 实例194 判断文件是否正在被使用 250 实例195 提取文件中的图标资源 251 实例196 在程序中调用.HLP文件 253 实例...

    Delphi自写的windows剪切板管理器.rar

    Delphi自写的windows剪切板管理器,可以保存剪切板txt格式的历史文本(最大200项),可以快速填序列号,也可上网填表格,还能自动抓取网页文本,快速打开文件夹,快速打开网络地址,自定义数据文件,其中用到了动态菜单。...

    powerbuilder论文合集(13篇)

    分布式PowerBuilder设计 基于INI文件的PowerBuilder事务对象参数读取与加密 基于PowerBuilder10_5数据报表系统的设计与实现 ...基于PowerBuilder的网页数据抓取 基于PowerBuilder的一种优化DataWindow研究与实践

    powerbuilder最新论文合集

    分布式PowerBuilder设计 基于INI文件的PowerBuilder事务对象参数读取与加密 基于PowerBuilder10_5数据报表系统的设计与实现 ...基于PowerBuilder的网页数据抓取 基于PowerBuilder的一种优化DataWindow研究与实践

    凌云好用剪切板 v17.0 免费绿色版.rar

    还可以快速填序列号,上网填表格,自动抓取网页文本,快速打开文件夹,批量打开文件夹,快速打开网络地址,小型个人数据管理,支持系统托盘,有delphi7源代码,超过所有同类软件. 更新日志: 凌云好用剪切板...

Global site tag (gtag.js) - Google Analytics