我以为这将是相当简单的,但它证明了具有挑战性。Google现在使用https://和Bing重定向以删除HTTP://

如何获取给定的搜索词的前5个URL?

我已经尝试了几种方法(包括加载结果进入iframe),但与我尝试的一切施用砖墙。

我甚至不需要代理,因为我在谈论要收获的非常少量的结果,并且只有几个月才能使用它20-30个术语。几乎不够触发来自搜索巨头的鞭打。

任何帮助都非常感谢!

这是我尝试的一个例子:

$query = urlencode("test"); 

preg_match_all('/<a title=".*?" href=(.*?)>/', file_get_contents("http://www.bing.com/search?q=" . urlencode($query) ), $matches); 

echo implode("<br>", $matches[1]);
.

有帮助吗?

解决方案

有三种主要的方法来做这件事。首先,使用您使用的搜索引擎的官方API - Google拥有一个,其中大部分都将。这些通常是有限的,但对于你正在谈论的数字,你会没事的数字。

第二种方法是使用刮刀程序访问搜索页面,输入搜索词,并提交关联表单。自从您指定了PHP以来,我会推荐 goutte 。在内部它使用刺绣和symfony组件,所以它必须是好的!上面链接的自述文件向您展示了它是多么容易。 HTML片段的选择是使用XPath或CSS完成的,因此它也很灵活。

最后,考虑从的免费软件包,考虑下载免费软件包。这使您可以使用点击界面构建刮刀,并且在将数据存储在本地或云数据库中的数据之前,它会如何刮掉页面的各个区域。

其他提示

您还可以使用 serp api 等第三方服务。

应该很容易集成::

$query = [
    "q" => "Coffee",
    "google_domain" => "google.com",
];

$serp = new GoogleSearchResults();
$json_results = $serp.json($query);
.

github project

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top