Php 谷歌允许一个请求刮取多少结果?
下面的PHP代码工作得很好,但是当它用于为指定的关键字刮取1000个Google结果时,它只返回100个结果。谷歌对返回的结果有限制吗,还是有不同的问题Php 谷歌允许一个请求刮取多少结果?,php,scrape,Php,Scrape,下面的PHP代码工作得很好,但是当它用于为指定的关键字刮取1000个Google结果时,它只返回100个结果。谷歌对返回的结果有限制吗,还是有不同的问题 <?php require_once ("header.php"); $data2 = getContent("http://www.google.de/search?q=auch&hl=de&num=100&gl=de&ix=nh&sourceid=chrome&ie=UTF-8");
<?php
require_once ("header.php");
$data2 = getContent("http://www.google.de/search?q=auch&hl=de&num=100&gl=de&ix=nh&sourceid=chrome&ie=UTF-8");
$dom = new DOMDocument();
@$dom->loadHtml($data2);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("//div[@id='ires']//li/h3/a/@href");
$j = 0;
foreach ($hrefs as $href)
{
$url = "http://www.google.de/" . $href->value . "";
echo "<b>";
echo "$j ";
echo $url = get_string_between($url, "http://www.google.de//url?q=", "&sa=");
echo "<br/>";
$j++;
}
?>
因为您正在解析实际网站的HTML,所以不要期望它仅仅因为更改单个参数而返回任意数量的结果
正如您在“搜索设置”页面上看到的,最多100个项目:
如果需要1000个结果,则必须分别解析前10个结果页
。。。这是不允许刮谷歌的结果
谷歌提供了一个
示例代码(REST):
谷歌允许一个请求刮取多少结果
。你可以刮零页
Please refer to clause 5.3 of the Google Terms of Service:
"You specifically agree not to access (or attempt to access)
any of the Services through any automated means (including use
of scripts or web crawlers)..."
你可以尝试逃避他们的侦查机制;谷歌搜索“刮谷歌搜索”发现了几种建议的技术。但谷歌并不支持这一点。如果您仍在项目中,您已经接受了答案:
正如人们所指出的,谷歌不喜欢被刮。这是他们的条款所不允许的,所以如果你同意他们,你可以通过自动访问网站来打破他们。
然而,谷歌本身并不关心网站启动时的访问权限。
即使Bing是由谷歌提供动力的,而且被发现这样做,我想大多数其他搜索引擎也从谷歌那里借来了
如果你一定要抓到谷歌,那就让它的检测率低于谷歌的检测率。不要敲打他们,因为这只会让你的项目停滞不前,谷歌会更加关注自动访问,这会让我们总体上更加困难
根据我的经验,你可以以每小时15到20个请求(一个IP)的速度长期访问谷歌,而不会被阻止。
当然,您的代码需要模拟浏览器并正常运行。
更高的速率会让你被拦截,首先(通常)是通过临时验证码。
解决验证码会创建一个cookie,允许您继续。
我见过长期验证码,也见过一个IP和大型子网的永久块。
所以规则#1:不要被发现,如果你被发现,那么自动停止你的刮刀
因此,这有点棘手,但如果您依赖于以这种方式获取数据,请看一下
这是一个PHP代码,它可以刮取多个关键字和多个页面,并管理IP地址,使它们不会被阻止。
我正在项目中使用该代码,到目前为止它仍然有效
如果你只需要从谷歌收集少量数据,而真正的排名并不重要,那么看看他们的API。如果排名很重要,或者你需要大量数据,你需要一个像我链接的那样的谷歌刮板
顺便说一句,PHP非常适合此任务,但您应该将其作为本地脚本运行,而不是通过Apache运行。对不起,我不明白您的最后一句话。我如何分别解析10个结果页面。当使用google时,在for循环中有1200(约)个请求,其中一个3个请求。它没有阻挡我。但一旦我将睡眠设置为0,它就会在一些请求后阻止我。现在,即使我将睡眠时间设置为10秒或更多,它也会阻止相同数量的请求。为什么?事实上,在抓取较大的数字时,您可能必须将IP上的请求速率降低到每小时10个以下。但谷歌有时会被攻击,它的抓取响应会有延迟,这可能会导致突发事件的发生,但你会在晚些时候受到更高的检测率的影响。
Please refer to clause 5.3 of the Google Terms of Service:
"You specifically agree not to access (or attempt to access)
any of the Services through any automated means (including use
of scripts or web crawlers)..."