【发布时间】:2017-01-03 10:46:33
【问题描述】:
我有一个 TIDHttp (Indy) 组件,它检索一个网站,从中获取要解析的 html 文本,并将收集到的数据显示为 delphi 表单。
代码运行良好,但是当找到超过 10 条记录时,网站会显示一个指向 Next() javascript 函数的链接,该函数会加载接下来的 10 条记录,依此类推。
我可以用 TIDHttp 做些什么来执行 next() 函数吗?
我用来检索 html 文本的代码如下:
procedure TForm1.ObtemStringsCorreio(aParamEntrada:string; var aRetorno:TStringList);
var
_ParamList : TStringList;
begin
_ParamList := TStringList.Create;
_ParamList.Add('cepEntrada=' + aParamEntrada);
_ParamList.Add('tipoCep=ALL');
_ParamList.Add('cepTemp=');
_ParamList.Add('metodo=buscarCep');
try
aRetorno.Text := idhtp1.Post(cEngineCorreios, _ParamList);
mmo1.Lines.Clear;
mmo1.Text := aRetorno.Text;
finally
_ParamList.Free;
end;
end;
【问题讨论】:
-
您似乎正试图从网站上抓取内容。您确定没有可用的 API 可以让您直接访问数据吗?抓取是不得已而为之的方法,网站所有者通常不鼓励这种方法,而且它天生就很脆弱。
-
感谢您的回答。我已经读过那些帖子了。他们使用非官方的“Correios”数据库,“Correios”不提供网络服务。
-
您无法使用 Indy 执行 Javascript。您必须下载并解析 HTML 和 Javascript 以确定单击按钮时脚本将生成哪种 HTTP 请求(或者,只需自己分析 HTML/Javascript,然后将行为硬编码到您的代码中),然后您可以使用 Indy 发送新的 HTTP 请求以检索下一批数据。
标签: javascript delphi indy execution idhttp