如何用PHP刮掉SERP(适用于小项目)

Cas*_*yne 1 php serp web-scraping

我认为这会相当简单,但事实证明这很有挑战性.谷歌使用https://现在和bing重定向删除HTTP://.

如何获取给定搜索字词的前5个网址?

我已经尝试了几种方法(包括将结果加载到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]);
Run Code Online (Sandbox Code Playgroud)

hal*_*fer 5

有三种主要方法可以做到这一点.首先,使用您正在使用的搜索引擎的官方API - 谷歌有一个,其中大部分都会.这些通常是数量有限的,但对于你所谈论的数字,你会没事的.

第二种方法是使用刮刀程序访问搜索页面,输入搜索词,并提交相关表格.既然你已经指定了PHP,我会推荐Goutte.在内部它使用Guzzle和Symfony组件,所以一定很好!上面链接的自述文件向您展示了它是多么容易.使用XPath或CSS完成HTML片段的选择,因此它也很灵活.

最后,考虑到所需擦除量较低,请考虑从Import.io下载免费软件包.这使您可以使用点击界面构建一个刮刀,并在将数据存储在本地或云数据库之前学习如何刮除页面的各个区域.