如何把别人网页上的数据通过delphi读到本地数据库(见者有分) (300分)

  • 主题发起人 主题发起人 knightlzf
  • 开始时间 开始时间
可以采用解析特定的网络包试试
 
有人直接分析新浪网站的页面,把内容提出来再利用。样子如下链接,连广告都清除掉了:
http://ale.xicp.net/News/
由于要分析提取,速度好象慢了点。
 

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;
 
我不知道能不能帮上忙。
可以分析一下,大富翁论坛离线浏览器。
 
procedure TForm1.Button3Click(Sender: TObject);
var
DoC: IHTMLDocument2;
begin
list:=TstringList.Create;
Doc := WebBrowser1.Document as IHTMLDocument2;
Memo1.Lines.Add(Doc.body.outerhtml); //读源码
Memo1.Lines.Add(Doc.body.outerText); //Html To Text
end;

需要引入
component/import activeX control ../microsoft html object library(version4.0).

再uses里 MSHTML_TLB

试试看吧
 
要读取那个网页的数据
我试试

如果是从网页上获得数据就只能分析html的源文件
通过WebBrowser获取网页
再从WebBrowser中获取信息
最后分析html的源文件

 
都挺厉害的,咱来听听吧
 
你可以使用xmlhttp来做, 用get就可以把别的机子上的数据取回来
 
帮你提贴!
 
to 1Fuyi
如果网页是需要post提交后才能显示的页面又当如何?
比如很多地方查询都是要输入用户名,提交后才显示相关信息的


另外,如果网络不好,页面无法获得的时候,如何加快程序的响应呢?
 
我也想知道
 
怎么没有人懂的
 
这个东西我做过
不过只能针对特定的网页
如果对方把网页格式给改了,程序是要更新的
灵活性很差
 
我要读取的网页是:http://202.123.206.173/soccer/html/odds/ch-winodds.html
希望能把各个球队的名称,比赛时间,赔率,让球等数据读到本地数据库里。
 
完全可以实现
 
这也很容易呀。通过WebBrowser获取网页,然后转化读取呀。我以前做过读取中国银行汇率也是这样。不过正如dudu320说的灵活性太差,除非用XML来,
 
zzjmail
能把你的代码帖出来研究一下吗?不灵活也没有关系,先看看原理是怎样的。谢谢!
 
太费劲了
 
麻烦,关 注!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部