2010-09-25 237 views
1

我试图让谷歌搜索结果的HTML使用file_get_contents获得谷歌的搜索结果,PHP

所以像这样的搜索词

intitle:index.of ”last modified” ”parent directory” (mp3|wma|ogg) "test" -htm -html -php -asp 

$file = file_get_html("http://www.google.com/search?q=intitle:index.of%20%20%94last%20modified%94%20%20%94parent%20directory%94%20%20%28mp3|wma|ogg%29%20%20%22test%22%20-htm%20-html%20-php%20-asp"); 

(基本上是这样的搜索词:

http://www.google.com/search?q=intitle:index.of ”last modified” ”parent directory” (mp3|wma|ogg) "test" -htm -html -php -asp 

和做503

有谁知道我能得到这个工作?

由于

回答

5

刮是against Google's TOS(读5.3)。您应该使用他们的API:

http://code.google.com/apis/ajaxsearch/documentation/

有关于如何在PHP中使用它的例子。使用API​​还返回一个结构化的对象(JSON),这样你可以节省用CPU功率(解析)和带宽资源(JSON只包含数据)。

+0

截至2010年11月1日,Google Web Search API已被正式弃用(因此只允许有限的请求)。新API可在https://developers.google.com/custom-search/v1/overview – krishna 2013-09-07 17:15:39

-2

搜索API已被弃用。你有这个正则表达式来解析HTML:

/URL \ Q =([^ <> &“] *)&

要小心,不要 “垃圾邮件” 谷歌,限制你的查询号码是多少? ,使用了大量的代理,模仿人类行为......

+0

我只是回答这个问题。标记的“答案”不是答案,更像是“不这样做”,但不回答问题......无论如何...... – 2013-10-04 23:11:59

0

的问题是有点过时,但我还是给它一个镜头的答案也不是很大。

首先,使用的file_get_contents ()是不会与谷歌合作。
谷歌WIL l拒绝你的查询(并且它是这样做的:-)

由于所选答案正确表示,他们的TOS表示你不允许自动访问它。他们为此辩护他们的服务。
但是这是你的决定,忽略刮除大型企业的非刮TOS,也这是你的决定在法律约束力的方式其实就是接受TOS。

这表示,有几种可能继续:

如果你有要求,你可以使用正常的互联网连接(没有代理等)的量非常低,但你需要让你的查询多一点智能。 。看看“卷曲”为PHP,它很可能已经安装。
设置用户代理是这样的:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"

这将使谷歌认为你是一个Chrome浏览器,而不是PHP脚本。
从这里开始,您可以使用DOM或正则表达式或类似的方法来继续解析HTML内容。
这里的问题在于Google会定期更改html源代码和检测逻辑,这种情况每隔几个月到一年就会发生一次。

看看这里的源代码和信息:http://google-scraper.squabbel.com

你会发现开源PHP解析程序和卷曲代码一些用户代理,应该可以帮助您快速开始。

如果您需要刮取大量结果,您需要多一点操作,如果您需要更多帮助,请在此处发表评论。