我如何通过php获取谷歌搜索结果pozition?
答案 0 :(得分:1)
您问题的核心是:您希望从Google搜索结果集中提取多少关键字和排名?
如果您想要准确的位置,建议的Google搜索API毫无价值。 同样重要的是,网站的排名/位置不仅取决于关键字。 它至少也取决于: *安全搜索和类似选项 *页面中的结果数量(您需要坚持10个结果) *您的位置(使用& hl参数有助于克服此限制) *您的IP /代理的质量(IP的滥用历史可以改变结果集)
我的第一个问题:您希望从Google获取多少关键字至关重要。 如果你用超过几个请求点击谷歌,你将收到验证码/灰名单和类似的麻烦。您可以使用一个IP每天发送大约500个请求(传播良好),因此对于更大规模的关键字分析,您需要代理。
PHP非常适合刮取Google的排名,您可以使用libCURL和DOM解析器来访问页面并处理原始的html数据。 在此处获取PHP Google排名检查器的源代码:http://google-rank-checker.squabbel.com 它包含您所需要的一切,并且是开源的。
如果你想自己做所有事情,这里有一个帮助你的开始:
用于访问Google的LibCURL。 libCURL可以管理cookie,支持代理,支持超时等。 它还支持HTTP标头,因此您可以使用您选择的用户代理字符串。 你不想在那里有“PHP脚本”或类似的东西,嗯?
示例代码:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER , 1);
$curl_proxy = "$ip:$port";
curl_setopt($ch, CURLOPT_PROXY, $curl_proxy); // comment this to test without proxy
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en; rv:1.9.0.4) Gecko/2009011913 Firefox/3.0.6");
$url="your google search q="
curl_setopt ($ch, CURLOPT_URL, $url);
$data = curl_exec ($ch);
curl_close($ch);
现在解析$ data你使用DOM。 PHP的DOM解析器能够像真正的浏览器一样通过html代码。 使用简单的strstr / substr / regex,您将很难获得各种谷歌搜索结果/排名,我已经尝试过并且没有成功。
Google将结果存储在
$dom = new domDocument;
$dom->strictErrorChecking = false;
$dom->preserveWhiteSpace = true;
@$dom->loadHTML($htmdata);
$lists=$dom->getElementsByTagName('li');
$results=array();
foreach ($lists as $list)
{
// now go through the <li> nodes and get the content
// if you are stuck check the php code at google-rank-checker.squabbel.com, it contains a working function
}
你还有很多工作要做。确保您没有向Google发送请求,请确保在脚本“疯狂”的情况下检测验证码。 使用适当的代理,检查我提到的文章和代码,了解详细信息。