手头有一个项目需要抓取别人网页上的信息,而这个网页的信息变化非常频繁是每秒钟都有变化。现在用的idhttp控件进行下载,正常情况下2~10秒钟内可以下载到网页,但是如果是高峰期可能要达到10秒钟。这样就无法达到系统要求,各位大侠能否给些建议,有什么方法能够比较稳定的而且快速的下载? 谢谢了
解决方案 »
- delphi为什么连接不到access?
- 请问怎样获得文件夹(Directory)的属性?
- fastreport报表文件(*.frf)是文本文件还是二进制文件
- 如何实现用户自定义报表?比如:用户可任意选择打印哪一个字段、宽度、打印行数等.
- 如何学网络编程?
- 怎样在进程中查找有没有某个EXE文件运行
- DELPHI通过ODBC与SQL SERVER连接时的问题(解决给高分)
- ADOTable没有ApplyUpdates怎么办?
- nsdb指什么?具体
- 谁知道那里有Kylix可以下载(正式服务器版,并可用)
- 小弟急需delphi实现文件下载,从服务器上把文件夹A 拷贝到本地磁盘上,假设本地磁盘有一文件夹A,用服务器上的覆盖本地的 实现更新,A文
- 请问哪能下Delphi2005啊?
只能还是按你现在用idhttp控件进行采集了,
你现在是因为下载时间间隔可能才长而要想办法你可以加多用一个timer,然后把它的时间间隔设置为你想要的合适的时间间隔
事件定时从一个变量(假设为A吧)取得数据进行处理原来用idhttp取得数据部分,修改为线程,把采集到的东东放到上面的变量A里(注意线程安全)而生成线程进行采集采用类似下面的循环for i := 0 to 10 do
begin
生成2-10个线程...
sleep(1000)
end;试试
现在的关键问题不是刷新的间隔,而是下载本事速度就比较慢,可能需要2秒钟才能下载完成。那么现在的要求就是必须在1秒钟完成下载,因此应该将其分段下载类似flashget这样的工具才能达到要求。
谢谢你的支持
谢谢关注,服务器当然不能受我控制。多线程好像也不是最好的放案,因为多线程也不知道哪个线程是最新的。
begin
try
Result := True;
DataString := '' ; with IdHTTP1 do
begin
try
ReadTimeout := 20000;
Host := aHost; if aReferer <> '' then
Request.Referer := aReferer ;
if aCookie<> '' then
begin
Request.CustomHeaders.Clear;
Request.CustomHeaders.Add('Cookie: '+aCookie);
end; if aProxyStr <> '' then
begin
ProxyParams.ProxyServer := Copy(aProxyStr,0,Pos(':',aProxyStr)-1);
ProxyParams.ProxyPort := StrToInt(Trim(Copy(aProxyStr,Pos(':',aProxyStr)+1,10)));
end;
Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;.NET CLR 1.1.4322)' ;
Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*'; DataString := Get(aUrl) ;
//DataString :='Head:[' + Response.RawHeaders.Text + #13#10']' +DataString;
except
on E: Exception do
begin
Result := False;
IdHTTP1.DisconnectSocket;
end;
end;
end;
finally
end;
end;