ページへ戻る
印刷
ADSL復活記念!Google APIs で遊ぶ。
をテンプレートにして作成 ::
XOOPS マニア
UsersWiki
:nao-pon/blog/2003-12-09-1 をテンプレートにして作成
開始行:
**ADSL復活記念!Google APIs で遊ぶ。
RIGHT:&tag(ネット,プログラミング);
ADSLが復活した記念に、Google Web APIs で遊んでみた。~
まずは、参考サイト([[Google Web APIsで遊ぼう:http://www.a...
+[[Google Web APIs - Home:http://www.google.com/apis/]]か...
+[[Create a Google Account:https://www.google.com/account...
+あとは、アクセス方法を考える。
このアクセス方法が、一番悩んだところだったけど、SOAP 呼び...
得られたデータの解析は、[[PHP]] の XMLパーサーを使えばい...
結構おもしろいので、このサイトの検索で利用してみました。
***簡単なソースコード
''get_result_by_google("EUC-JPでURLでコードした検索語")''...
-戻り配列['title']:ページタイトル
-戻り配列['url']:ページURL
-戻り配列['snippet']:検索語周辺のテキスト
#code(){{{
function get_result_by_google($word,$max=10,$start=0)
{
$res = result_google_api($word);
$data = str_replace(array("\r","\n"),"",$res['data']);
$data = str_replace(array("<",">","&"),array(...
$data = str_replace("<br> ","",$data);
$ret = array();
if (preg_match_all("/<item[^>]*>(.+?)<\/item>/i",$data,...
{
$i = 0;
foreach($arg[1] as $item)
{
if (preg_match("/<title[^>]*>(.*)<\/title>/",$item,...
if (preg_match("/<snippet[^>]*>(.*)<\/snippet>/",$i...
if (preg_match("/<URL[^>]*>(.*)<\/URL>/",$item,$mat...
$i++;
}
}
return $ret;
}
function result_google_api($word,$max=10,$start=0)
{
$word = mb_convert_encoding($word, "UTF-8", "EUC-JP");
$license_key = ""; //ライセンスキーを設定
$data = "<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoa...
xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\"
xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">
<SOAP-ENV:Body>
<ns1:doGoogleSearch xmlns:ns1=\"urn:GoogleSearch\"
SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/...
<key xsi:type=\"xsd:string\">$license_key</key>
<q xsi:type=\"xsd:string\">$word</q>
<start xsi:type=\"xsd:int\">$start</start>
<maxResults xsi:type=\"xsd:int\">$max</maxResults>
<filter xsi:type=\"xsd:boolean\">true</filter>
<restrict xsi:type=\"xsd:string\"></restrict>
<safeSearch xsi:type=\"xsd:boolean\">false</safeSearch>
<lr xsi:type=\"xsd:string\">lang_ja</lr>
<ie xsi:type=\"xsd:string\">utf8</ie>
<oe xsi:type=\"xsd:string\">utf8</oe>
</ns1:doGoogleSearch>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>";
$query = 'POST '."/search/beta2"." HTTP/1.0\r\n";
$query .= "Host: "."api.google.com"."\r\n";
$query .= "Content-Type: text/xml; charset=utf-8\r\n";
$query .= 'Content-Length: '.strlen($data)."\r\n";
$query .= "\r\n";
$query .= $data;
$fp = fsockopen("api.google.com",80,$errno,$errstr,30);
if (!$fp)
{
return array(
'query' => $query, // Query String
'rc' => $errno, // エラー番号
'header' => '', // Header
'data' => $errstr // エラーメッセージ
);
}
fputs($fp, $query);
$response = '';
while (!feof($fp))
{
$response .= fgets($fp,4096);
}
fclose($fp);
$response = mb_convert_encoding($response, "EUC-JP", "U...
$resp = explode("\r\n\r\n",$response,2);
$rccd = explode(' ',$resp[0],3); // array('HTTP/1.1','2...
return array(
'query' => $query, // Query String
'rc' => (integer)$rccd[1], // Response Code
'header' => $resp[0], // Header
'data' => $resp[1] // Data
);
}
}}}
----
#comment(,btn:つっこみ)
終了行:
**ADSL復活記念!Google APIs で遊ぶ。
RIGHT:&tag(ネット,プログラミング);
ADSLが復活した記念に、Google Web APIs で遊んでみた。~
まずは、参考サイト([[Google Web APIsで遊ぼう:http://www.a...
+[[Google Web APIs - Home:http://www.google.com/apis/]]か...
+[[Create a Google Account:https://www.google.com/account...
+あとは、アクセス方法を考える。
このアクセス方法が、一番悩んだところだったけど、SOAP 呼び...
得られたデータの解析は、[[PHP]] の XMLパーサーを使えばい...
結構おもしろいので、このサイトの検索で利用してみました。
***簡単なソースコード
''get_result_by_google("EUC-JPでURLでコードした検索語")''...
-戻り配列['title']:ページタイトル
-戻り配列['url']:ページURL
-戻り配列['snippet']:検索語周辺のテキスト
#code(){{{
function get_result_by_google($word,$max=10,$start=0)
{
$res = result_google_api($word);
$data = str_replace(array("\r","\n"),"",$res['data']);
$data = str_replace(array("<",">","&"),array(...
$data = str_replace("<br> ","",$data);
$ret = array();
if (preg_match_all("/<item[^>]*>(.+?)<\/item>/i",$data,...
{
$i = 0;
foreach($arg[1] as $item)
{
if (preg_match("/<title[^>]*>(.*)<\/title>/",$item,...
if (preg_match("/<snippet[^>]*>(.*)<\/snippet>/",$i...
if (preg_match("/<URL[^>]*>(.*)<\/URL>/",$item,$mat...
$i++;
}
}
return $ret;
}
function result_google_api($word,$max=10,$start=0)
{
$word = mb_convert_encoding($word, "UTF-8", "EUC-JP");
$license_key = ""; //ライセンスキーを設定
$data = "<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoa...
xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\"
xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">
<SOAP-ENV:Body>
<ns1:doGoogleSearch xmlns:ns1=\"urn:GoogleSearch\"
SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/...
<key xsi:type=\"xsd:string\">$license_key</key>
<q xsi:type=\"xsd:string\">$word</q>
<start xsi:type=\"xsd:int\">$start</start>
<maxResults xsi:type=\"xsd:int\">$max</maxResults>
<filter xsi:type=\"xsd:boolean\">true</filter>
<restrict xsi:type=\"xsd:string\"></restrict>
<safeSearch xsi:type=\"xsd:boolean\">false</safeSearch>
<lr xsi:type=\"xsd:string\">lang_ja</lr>
<ie xsi:type=\"xsd:string\">utf8</ie>
<oe xsi:type=\"xsd:string\">utf8</oe>
</ns1:doGoogleSearch>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>";
$query = 'POST '."/search/beta2"." HTTP/1.0\r\n";
$query .= "Host: "."api.google.com"."\r\n";
$query .= "Content-Type: text/xml; charset=utf-8\r\n";
$query .= 'Content-Length: '.strlen($data)."\r\n";
$query .= "\r\n";
$query .= $data;
$fp = fsockopen("api.google.com",80,$errno,$errstr,30);
if (!$fp)
{
return array(
'query' => $query, // Query String
'rc' => $errno, // エラー番号
'header' => '', // Header
'data' => $errstr // エラーメッセージ
);
}
fputs($fp, $query);
$response = '';
while (!feof($fp))
{
$response .= fgets($fp,4096);
}
fclose($fp);
$response = mb_convert_encoding($response, "EUC-JP", "U...
$resp = explode("\r\n\r\n",$response,2);
$rccd = explode(' ',$resp[0],3); // array('HTTP/1.1','2...
return array(
'query' => $query, // Query String
'rc' => (integer)$rccd[1], // Response Code
'header' => $resp[0], // Header
'data' => $resp[1] // Data
);
}
}}}
----
#comment(,btn:つっこみ)
ページ名: