人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

「タウンページ」のネット版「iタウンページ」の検索結果から、住所などのリストを作成するプログラムを作成する方法を教えてください。

作成する言語は、javascriptかRubyを考えています。
ネットでいろいろ検索しましたが、サイトの方が更新されているみたいでうまくいきません。
どうやら、単純なHTMLのスクレイピングでは無理みたいです。
どうぞ、お分かりになる方はアドバイスをお願いします。

●質問者: hisame444
●カテゴリ:ビジネス・経営 インターネット
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● uwao
●75ポイント

検索結果のHTMLのソースから正規表現などで住所などを抜き出してファイルに保存する方法が良いように思います。
JavaScriptは馴染まないように思いますので、RubyやPHPなどで開発するのが良いと思います。


hisame444さんのコメント
ご回答ありがとうございます。 私もRubyが一番扱いなれているので、できればそれで行きたいと思います。

2 ● グリーン
●75ポイント

HTMLのソースで住所を抜き出して保存するのがおススメです!


hisame444さんのコメント
ご回答ありがとうございます。 しかし、検索結果のソースを見てみても、最初の20件しか表示されません。 どうしたら、表示されている結果を取得できるのでしょうか…。

3 ● Cherenkov
●75ポイント

適当にブックマークレットを作ってみました。firefox,chromeで動作確認。

javascript:(function() {
var result = {
 keyword: document.getElementById('input-text').value,
 url: location.href,
 data: []
};
var shop = document.querySelectorAll('#main-inner [class*="box-shop-"]');
for (var i=0; i<shop.length; i++) {
 var e = shop[i];
 var name = e.querySelector('.heading a').textContent;
 var tbl = e.querySelectorAll('[class*="tbl-description-"] td');
 var address = tbl[0].textContent;
 var tel = tbl[1].textContent;
 var shopObj = {
 name: name, address: address, tel: tel
 };
 result.data.push(shopObj)
}
console.log(result);
var json = JSON.stringify(result);
var textarea = document.createElement('textarea');
textarea.value = json;
textarea.style.cssText = 'position:fixed; top:50px; left:50px; width:500px;';
document.body.appendChild(textarea);
void(0);
})();

はてなの検索結果 - iタウンページ で実行した結果

{
"keyword": "はてな",
"url": "http://itp.ne.jp/result/?kw=%82%CD%82%C4%82%C8",
"data": [{
"name": "はてな",
"address": "〒190-0011 東京都立川市高松町3丁目30?24",
"tel": "042-527-3339"
}, {
"name": "はてなパソコン教室",
"address": "〒572-0042 大阪府寝屋川市東大利町13?18",
"tel": "072-801-1787"
}, 
省略

Cherenkovさんのコメント
rubyでスクレイピングならmechanizeだろうけど仕様がわからないのでそれまでブックマークレットでお茶濁し。

hisame444さんのコメント
ご回答ありがとうございます。 ブラウザの拡張は経験がないため、入門サイトを参照しながら試してみます。

Cherenkovさんのコメント
>|javascript| var result = { keyword: document.getElementById('input-text').value, url: location.href, data: [] }; var shop = document.querySelectorAll('#main-inner [class*="box-shop-"]'); for (var i=0; i<shop.length; i++) { var e = shop[i]; var name = e.querySelector('.heading a').textContent; var tbl = e.querySelectorAll('[class*="tbl-description-"] td'); var address = tbl[0].textContent; var tel = tbl[1].textContent; var shopObj = { name: name, address: address, tel: tel }; result.data.push(shopObj) } console.log(result); var json = JSON.stringify(result); var textarea = document.createElement('textarea'); var csv = result.data.map(function(e){ return [e.name, e.tel, e.address].join(',') }); textarea.value = csv.join('\n'); //textarea.value = json; textarea.style.cssText = 'position:fixed; top:50px; left:50px; width:500px;'; document.body.appendChild(textarea); ||< こうすればcsvに

4 ● のぶひで
●75ポイント

HTMLのソースで住所抜き出して保存。


hisame444さんのコメント
ご回答ありがとうございます。 検索結果のソースには、最初の20件しか入っていないみたいなのですが…。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ