【问题标题】:How to extract total amount of search results in Google results page如何提取谷歌结果页面中的搜索结果总量
【发布时间】:2016-12-20 22:53:21
【问题描述】:

我正在尝试从 Google 结果页面中查找并提取“大约 16,600,000 个结果(0.69 秒)”文本。不是结果,只是字符串文本。提取后,我想将结果保存在一个数组中,并用其他关键字重复两次。之后,我将遍历数组以将其打印在表格中。我不知道为什么,但如果我试图在页面上找到“结果”,我总是告诉我它没有找到任何东西。 当前代码:

<?php
$url = "https://www.google.co.uk/#q=cheese";
$html = file_get_contents($url);
if (strpos($html, "results") !== false) {
  echo "found";
} else {
  echo "not found";
}
?>

【问题讨论】:

  • 据我所知,没有“白帽”方式可以获取所有搜索结果,因为 Google 不允许这样做,甚至不将其作为服务出售,并且会限制宏/插件/自动化浏览器等尝试爬取其页面。一种“黑帽”方法是使用 ScrapeBox 或任何其他基于旋转 IP 地址和其他标识符的解决方案,并带有代理池 + 欺骗以避免受到限制。顺便说一句,我没有运行你的代码,但是有很多关于如何使用代码或应用程序抓取结果的好例子,但挑战是节流。

标签: javascript php google-search


【解决方案1】:

我认为这是因为https://www.google.co.uk/#q=cheese 只返回一个 html 文档,该文档运行一些 JavaScript 代码,在第二次调用中获取搜索结果。

(您可以在浏览器中禁用 JavaScript 并访问该页面以“查看”file_get_contents 会看到什么)

【讨论】:

    【解决方案2】:

    正如其他答案已经指出的那样,您将无法使用 file_get_contentscurl 执行此操作。

    您可能想为此查看PhantomJS 之类的内容。 PhantomJS 是一个 WebKit 浏览器,可让您获得所需的结果。

    【讨论】:

    • 我不认为 PhantomJS 会对此有所帮助,因为谷歌会在几个结果页面后限制它。
    猜你喜欢
    • 2023-03-20
    • 2018-12-19
    • 2011-05-21
    • 2019-04-10
    • 2012-09-25
    • 2012-10-19
    • 2020-05-03
    • 2015-12-29
    • 2018-04-06
    相关资源
    最近更新 更多