Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 使用TWebBrowser解析HTML数据_Delphi_Browser_Html Parsing - Fatal编程技术网

Delphi 使用TWebBrowser解析HTML数据

Delphi 使用TWebBrowser解析HTML数据,delphi,browser,html-parsing,Delphi,Browser,Html Parsing,我得到了一个使用TWebBrowser组件的应用程序,我有一个站点的链接,该站点使用TWebBrowser使用“for”语句打开,示例如下: adoquery.sql.text = "select top 10 id from table1"; adoquery.sql.open; adoquery.sql.first; while not adoquery.eof do begin TwebBrowser.navigate("http://w

我得到了一个使用TWebBrowser组件的应用程序,我有一个站点的链接,该站点使用TWebBrowser使用“for”语句打开,示例如下:

adoquery.sql.text = "select top 10 id from table1";
    adoquery.sql.open;
    adoquery.sql.first;

    while not adoquery.eof do 
    begin
        TwebBrowser.navigate("http://website1.com/php?id="+inttostr(id));
        adoquery.next;
    end;

当页面加载完成(“OnNavigateComplete”)时,我调用一个函数来解析加载的TwebBrowserData的HTML,然后在数据库中进行更新,但它不起作用。调用方法“OnNavigateComplete”时,我如何更新数据库的数据?

您的问题对我来说没有多大意义,但请注意,如果您在某个地方导航TWebBrowser,并不意味着它是即时的。这需要一些时间。更准确地说,浏览器处于
READYSTATE\u COMPLETE
状态需要一段时间,这意味着文档收到了它的所有数据。上面的代码不是有效的Pascal或Delphi-您需要使用
'single'
而不是
'double'
引号。您也不能像那样只使用
id
——您应该使用字段[0].AsString(我们知道只有一个字段)、FindField()或效率最低的FieldByName()。FindField示例:
var IdFld:TField;。。。ADOQuery.Open;IdFld:=AdoQuery.FindField('ID');而不是AdoQuery.Eof做begin TwebBrowser.navigate('http://website1.com/php?id=“+IdFld.AsString)您遇到了哪些错误?上述代码中有五个错误:1。使用双引号。2.使用ADOQuery.SQL.Open和ADOQuery.SQL.First而不是ADOQuery.Open;。对First的(尝试的)调用是多余的。新打开的查询已在第一条记录上。3.您需要使用fieldexpr.AsString获取ID的值。4.您需要使用TWebBrowser的实例,而不是从TWebBrowser调用
Navigate
——它不是类(静态)方法。5.使用质量操作符
=
而不是赋值操作符
:=
使用可视化浏览器执行HTTP GET是非常过分的。使用
IdHTTP
或类似的方法。@DavidHeffernan:视情况而定,有时您需要访问DOM以便于数据提取。