2013-11-15 14 views
1

我認爲這會相當簡單,但它證明具有挑戰性。 Google現在使用https://,並使用重定向來刪除HTTP://如何用PHP抓取SERP(對於小型項目)

如何獲取給定搜索字詞的前5個網址?

我已經嘗試了幾種方法(包括將結果加載到iframe中),但是不斷嘗試我所做的一切。

我甚至不需要一個代理服務器,因爲我正在談論的是一個非常少量的收穫結果,並且只會在幾個月內使用它20-30個術語。幾乎不足以引發搜索巨頭的鞭wh。

任何幫助將不勝感激!

這裏是什麼,我已經試過了一個例子:

$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]); 
+0

[你不喜歡用HTML解析器代替嗎?](http://stackoverflow.com/a/1732454/102937) –

+0

對於如此少量的數據,會不會有紙和鉛筆適合你? – 2013-11-15 22:15:21

+0

我有http://sourceforge.net/projects/simplehtmldom/,但似乎無法正確使用它。我真正需要的是Bing的SERP中的''標籤。 –

回答

5

有三種主要的方式來做到這一點。首先,使用你正在使用的搜索引擎的官方API - 谷歌有一個,其中大部分都會。這些通常是音量有限的,但對於你所談論的數字,你會沒事的。

第二種方法是使用刮板程序訪問搜索頁面,輸入搜索詞並提交相關表單。既然你已經指定了PHP,我推薦Goutte。它內部使用了Guzzle和Symfony組件,所以它一定很好!在上面的鏈接README顯示你是多麼容易。 HTML片段的選擇使用XPath或CSS完成,因此它也很靈活。

最後,考慮到所需刮擦量較低,請考慮從Import.io下載免費軟件包。這使您可以使用點擊式界面構建刮板,並且可以在將數據存儲到本地或雲數據庫之前學習如何刮取頁面的各個區域。

+1

很酷,謝謝你花時間回答很多選擇。 –