[
自宅サーバーWebRing
┃
前
|ID=54
前後5表示
|
次
┃
乱移動
|
サイト一覧
]
このサイト内
書籍 DVD CD
Google(日本語)
Google(Web全体)
Google(イメージ)
Google(キャッシュ)
Yahoo! JAPAN
goo 英和
goo 和英
goo 国語
goo 新語
サイトマップ
リンク集
ダウンロード
フォーラム
Users Wiki
最新情報
TOP
»
UsersWiki
»
nao-pon
»
blog
» 2003-12-09-1のソース
|
一覧
検索
最新
ヘルプ
ページへ戻る
履歴
リンク元
印刷
ADSL復活記念!Google APIs で遊ぶ。
のソース
UsersWiki
:
nao-pon
/
blog
/
2003-12-09-1
のソース
差分
を表示
nao-pon/blog/2003-12-09-1
へ行く。
« Prev
**ADSL復活記念!Google APIs で遊ぶ。 [#qe76fb03] RIGHT:&tag(ネット,プログラミング); ADSLが復活した記念に、Google Web APIs で遊んでみた。~ まずは、参考サイト([[Google Web APIsで遊ぼう:http://www.asahi-net.or.jp/~cs8k-cyu/gglwebapi/]])で情報収集。 +[[Google Web APIs - Home:http://www.google.com/apis/]]から[[Download the developer's kit:http://www.google.com/apis/download.html]]をダウンロード +[[Create a Google Account:https://www.google.com/accounts/NewAccount?continue=http://api.google.com/createkey&followup=http://api.google.com/createkey]]でアカウントを取りライセンスキーを取得する。 +あとは、アクセス方法を考える。 このアクセス方法が、一番悩んだところだったけど、SOAP 呼び出しはいまいちよく解らないので、直接 XML を POST することにした。~ 得られたデータの解析は、[[PHP]] の XMLパーサーを使えばいいと思うのだけど、これもいまいち勉強不足でよく解らんので、自前で解析することにした。 結構おもしろいので、このサイトの検索で利用してみました。 ***簡単なソースコード [#f96fdbf7] ''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); $data = str_replace("<br> ","",$data); $ret = array(); if (preg_match_all("/<item[^>]*>(.+?)<\/item>/i",$data,$arg)) { $i = 0; foreach($arg[1] as $item) { if (preg_match("/<title[^>]*>(.*)<\/title>/",$item,$match)) $ret[$i]['title'] = $match[1]; if (preg_match("/<snippet[^>]*>(.*)<\/snippet>/",$item,$match)) $ret[$i]['snippet'] = $match[1]; if (preg_match("/<URL[^>]*>(.*)<\/URL>/",$item,$match)) $ret[$i]['url'] = $match[1]; $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.xmlsoap.org/soap/envelope/\" 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/soap/encoding/\"> <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", "UTF-8"); $resp = explode("\r\n\r\n",$response,2); $rccd = explode(' ',$resp[0],3); // array('HTTP/1.1','200','OK\r\n...') return array( 'query' => $query, // Query String 'rc' => (integer)$rccd[1], // Response Code 'header' => $resp[0], // Header 'data' => $resp[1] // Data ); } }}} ---- #comment(,btn:つっこみ)
« Prev
nao-pon/blog/2003-12-09-1 のバックアップ一覧
nao-pon/blog/2003-12-09-1 のバックアップソース(No. All)
1: 2003-12-09 (火) 22:34:42
nao-pon
2: 2003-12-09 (火) 22:34:42
nao-pon
現: 2003-12-09 (火) 22:34:42
nao-pon
ぺージ情報
ぺージ名 :
nao-pon/blog/2003-12-09-1
ページ別名 :
未設定
ページオーナー :
nao-pon
閲覧可
グループ :
すべての訪問者
ユーザー :
すべての訪問者
編集可
グループ :
なし
ユーザー :
ゲスト
Counter: 353, today: 1, yesterday: 1
メインメニュー
ホーム
価格比較 百貨
UsersWiki
新規ページ作成
最新ページ一覧
全ページ一覧
全コメント一覧
ヘルプ
» 関連ページ
» 記述を見る
» 変更点を見る
» バックアップ一覧
» 添付ファイル一覧
» リンク元一覧
xpwiki
お問い合わせ
ファイルマネージャー
ログイン
ユーザー名:
パスワード:
パスワード紛失
|
新規登録
最近の更新
最新の20件
2023-05-14
nao-pon
/
gmap + gmap_street + gmap_insertmarker
nao-pon
/
googlemaps2
2023-01-20
nao-pon
/
blog
/
ESP8266 を壊してしまいました しかも続けて2回も
2022-09-22
nao-pon
/
blog
/
ESP32 + ESPHome の Bluetooth Proxy で SwitchBot Mater
2022-08-26
nao-pon
/
blog
/
独自ビルドの Tasmota を 12.1.1 へ
2022-08-19
nao-pon
/
blog
/
Zigbee + ZHA のメモ書き
2022-01-17
nao-pon
/
blog
/
HomeAssistant 統合の Tasmota-IRHVAC に貢献
2021-08-03
nao-pon
/
ファイル置き場
/
スペースサワダ
2021-07-01
nao-pon
/
blog
/
HomeAssistant 統合の Tasmota-IRHVAC の不具合修正
2021-06-20
nao-pon
/
blog
/
Tasmota を 9.4.0 から 9.5.0 へアップデート
2021-06-15
nao-pon
/
blog
/
ミンティア[MINTIA] で WiFi 6ボタンスイッチを作った
2021-04-27
PublicBlog
2021-03-17
nao-pon
/
blog
/
SwitchBot 温湿度計を ESP32 でモニタリング
2021-03-13
nao-pon
/
blog
/
東芝エアコンのエントリーモデルもWiFi化
2021-02-23
risoulaser
2021-02-18
nao-pon
/
blog
/
Panasonic (ナショナル) エアコンの 2008 年モデルも WiFi 化
2021-02-15
nao-pon
/
blog
/
Tasmota で HA 端子(JEM-A) 連携
2021-02-07
nao-pon
/
blog
/
Tasmota で三菱エアコンを完全コントロール
2021-01-27
nao-pon
/
blog
/
ラトック RS-WFIREX4 用の HomeAssistant カスタムコンポーネントを作った
2020-12-28
nao-pon
/
blog
/
ESPHome の CCS811 コンポーネントで Baseline 値センサーを追加
オンライン状況
73 人のユーザが現在オンラインです。 (3 人のユーザが UsersWiki を参照しています。)
登録ユーザ: 0
ゲスト: 73
もっと...
サイト情報