Google 为程序员提供了各种 api 供程序员免费试用,并以合理的成本长期和广泛使用。以下内容可能违反 google 使用条款,在此提供仅供学术讨论;)此外,这种解决方案通常是短暂的,因为它们容易受到所依赖内容的次要版本的影响。
这可能会变得很棘手,因为www.google.com
似乎会根据调用的浏览器来响应不同的页面。我没有chromium
安装,也无法检查它得到的响应,但是TWebBrowser
(IE 11)得到的结果接近你的预期。
查看源代码(View source
在 r-click 的弹出菜单中TWebBrowser
,View page source
在 ...的 r-click 弹出菜单中Chrome
)以验证元素类型和字段名称。
以下是基于TWebBrowser
得到的响应,因为它回答了您的问题。
您正在页面中搜索具有值为的字段https://www.google.com
的html
标签。但是这样的事情是不存在的!不在接收的页面中。A
id
btnK
TWebBrowser
您显然正在寻找这个:
<input value="Google Search" aria-label="Google Search" name="btnK" type="submit">
如您所见,它是一个input
标签,其name
字段值为btnK
所以,修改你的代码,使第一行变成
thelink:= WebBrowser1.OleObject.Document.all.tags('input');
第六行变成
if Pos('btnK', thelink.Item(x).name) > 0 then
事实上,当您调用click
它时,它会激活搜索。
但你可以做得更简单。在https://www.google.com
. 对我来说,它看起来如下:
https://www.google.com/search?q=delphi&rlz=1C1Y...
这部分'q=delphi'
是有趣的部分(它可能不在问号之后,而是在 URL 的后面)。
因此,您可以简单地有一个编辑框来输入要搜索的单词和一个网络浏览器来显示结果
procedure TForm1.Button1Click(Sender: TObject);
const
search = 'https://www.google.com/search?q=';
begin
WebBrowser1.Navigate(search + Edit1.Text);
end;