2010-09-25 236 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解析程序和捲曲代碼一些用戶代理,應該可以幫助您快速開始。

如果您需要刮取大量結果,您需要多一點操作,如果您需要更多幫助,請在此處發表評論。