在网页内搜索的正确方法是什么?

问题描述 投票:0回答:1

我有一张手机图片,想确定其型号和名称。到目前为止我所做的:

使用 Delphi,我通过 Google Lens 进行了反向图像搜索:

https://lens.google.com/uploadbyurl?url=https://dz.foorshop.com/wp-content/uploads/2022/05/Samsung-M32-White-2.jpg

如果您打开最后一个链接,您会发现一些匹配项,我的目标是获取“相关搜索”后面的文本,该文本可识别确切的手机型号和名称。

first image example

下一个代码对于第一个图像示例效果很好:

var
 LHTTPClient: TNetHTTPClient;
 LResponse: IHTTPResponse;
 output: string;
 p1, p2: Integer;
begin
  LHTTPClient := TNetHTTPClient.Create(nil);
  try
    LHTTPClient.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36';
    LHTTPClient.AcceptLanguage := 'en-US,en;q=0.5';
    LHTTPClient.Accept :=  'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    LResponse := LHTTPClient.Get('https://lens.google.com/uploadbyurl?url=https://dz.foorshop.com/wp-content/uploads/2022/05/Samsung-M32-White-2.jpg');
    SetLength(Output, LResponse.ContentLength);
    Output := LResponse.ContentAsString();
    
    // FINIDING A SIGNATURE TO RETREIVE RELATED SEARCH TEXT
    p1 := Pos('",["https://t2.gstatic.com/images?q', Output);
    p2 := p1;
    while p2 > 0 do
    begin
      Dec(p2);
      if Output[p2] = '"' then
      begin
        Result := Copy(Output, p2+1, p1 - p2-1);
        ShowMessage(Result);
        Break;
      end;
    end;
  finally
    LHTTPClient.Free;
  end;
end;

但是当我更改图像并尝试搜索时,找不到该签名。所以我不知道名字!

second image example

https://lens.google.com/uploadbyurl?url=https://fdn2.gsmarena.com/vv/bigpic/samsung-galaxy-m32-5g-new.jpg

我知道还有其他类型的搜索,例如使用 HTML 解析器,但测试了很多,但都未能找到该文本!

如有任何帮助,我们将不胜感激。

delphi search firemonkey
1个回答
0
投票

我相信“相关搜索”文本是通过 Javascript 生成的,因此不能仅通过从链接中获取 HTML 来获取。您需要使用呈现 Javascript 的 Web 引擎,然后抓取该输出。

© www.soinside.com 2019 - 2024. All rights reserved.