2

PHPまたはJavaScriptを使用してGoogle検索結果を取得する方法について頭を悩ませようとしています。以前は可能だったことは知っていますが、今は方法が見つかりません。

http://www.getupdated.se/sokmotoroptimering/seo-verktyg/kolla-ranking/の機能を (ある程度) 複製しようとしています。

しかし、実際に解決したい中心的な問題は、PHPまたはJavaScriptを介して検索結果を取得することであり、残りは理解できます。

file_get_contents() または cURL を使用して結果をフェッチしてもうまくいかないようです。

例:

$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, 'http://www.google.se/#hl=sv&q=dogs');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$result = curl_exec($ch);
curl_close($ch);
echo '<pre>';
var_dump($result);
echo '</pre>';

結果:

string(219) "302 Moved ドキュメントはここに移動しました。"

そのため、いくつかのグーグルでhttp://code.google.com/apis/customsearch/v1/overview.htmlを見つけましたが、それは 1 つ以上の Web サイトのカスタム検索を生成する場合にのみ機能するようです。「カスタム検索エンジン」の cx-parameter を渡す必要があるようです。

とにかく、何か考えはありますか?

4

3 に答える 3

8

私は以前にそれをしました。http リクエストを作成して html コンテンツを生成https://www.google.co.in/search?hl=en&output=search&q=indiaし、htmldom php ライブラリを使用して特定のタグを解析します。PHP SIMPLE HTML DOMを使用して結果ページのコンテンツを解析できます

デモ: 以下のコードは、すべての結果のタイトルを示します:

<?php

include("simple_html_dom.php");

$html = file_get_html('http://www.google.co.in/search?hl=en&output=search&q=india');

$i = 0;
foreach($html->find('li[class=g]') as $element) {
    foreach($element->find('h3[class=r]') as $h3) 
    {
        $title[$i] = '<h1>'.$h3->plaintext.'</h1>' ;
    }
       $i++;
}
print_r($title);

?>
于 2013-01-27T20:50:13.863 に答える
0

奇数。curlコマンドから次のように実行すると、次のようになるため200 OKです。

curl -I 'http://www.google.se/#hl=sv&q=dogs'
HTTP/1.1 200 OK
Date: Sun, 27 Jan 2013 20:45:02 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=b82cb66e9d996c48:FF=0:TM=1359319502:LM=1359319502:S=D-LW-_w8GlMfw-lX; expires=Tue, 27-Jan-2015 20:45:02 GMT; path=/; domain=.google.se
Set-Cookie: NID=67=XtW2l43TDBuOaOnhWkQ-AeRbpZOiA-UYEcs7BIgfGs41FkHlEegssgllBRmfhgQDwubG3JB0s5691OLHpNmLSNmJrKHKGZuwxCJYv1qnaBPtzitRECdLAIL0oQ0DSkrx; expires=Mon, 29-Jul-2013 20:45:02 GMT; path=/; domain=.google.se; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked

また、urlencode渡された URL に a を設定して、次の行を設定することを検討してください。

curl_setopt($ch, CURLOPT_URL, 'http://www.google.se/#hl=sv&q=dogs');

これに対する変更:

curl_setopt($ch, CURLOPT_URL, 'http://www.google.se/' . urlencode('#hl=sv&q=dogs'));
于 2013-01-27T20:49:08.573 に答える