とあるデータベース系ウェブサイトから、

研究目的でデータの使用を許可されました。
ただCSV等のデータの形では提供されず、
勝手にサイトから落とす(要はこぴぺ)ように言われました。

ただかなり大規模なデータになるので、
クローラを作ろうと思っているのですが、
一番早い言語・方法を教えてください。

※EXCEL VBAと正規表現を使ったプログラムでは、よくページのロードが長くかかった時につっかえてしまって大変でした。

よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/10/11 00:53:55
  • 終了:2010/10/18 00:55:03

回答(8件)

id:Silvanus No.1

Silvanus回答回数174ベストアンサー獲得回数672010/10/11 01:12:57

ポイント20pt

クローラそのものを自作しなければどうしても持って来られないデータ…

という訳ではないんですよね?GETHTMLWは試されましたか?

http://www.vector.co.jp/soft/win95/net/se077067.html

id:Hajimex

なるほどこちらはHPを丸ごとDLするソフトウェアですね。

ほしいデータがあるサイトは、テーブル形式でデータが記述されています。

私はこれをエクセルかCSVの形でほしいと思っています。

すみません、説明が足りませんでした。

2010/10/11 01:53:45
id:dev_zer0 No.2

dev_zer0回答回数332ベストアンサー獲得回数252010/10/11 02:07:50

ポイント20pt

ええと、あなたの得意なプログラミング言語、OSが分からないので私だったらという回答になります

また、質問も微妙に曖昧なのでそれも考慮に入れてみます。

# コメントが開いていればまずそれを聞きたかったのですが、開いてない...


まず、前提条件として出力結果はCSV, 正規表現をサポートしている言語を

期待していると想定します。

> 勝手にサイトから落とす(要はこぴぺ)ように言われました。

というのは

1. 直接DBを検索できず、HTMLが返される

2. 直接DBを検索できる

ことで大きく異なってきます。

HTMLが返される場合、どうにかしてHTMLをDOM/SAXに変換する必要が出てきます

直接DBを検索できる場合、SQLさえ知っていればどうにでもできます。


次に

> 一番早い言語・方法を教えてください。

これは

1. 処理速度が速い

2. そのプログラム言語が比較的シンプルで覚えやすい

という解釈ができます。


ぶっちゃけ処理速度が速く開発環境が整備されている言語は私はJavaだと思います。

# C/C++は正規表現がアレなので...


また、コンパイル言語よりも多少処理速度が遅いけれど

try&errorで何度もデバッグができる言語は

Perl or PHPだと思います。(実は最近のPHPって良く分かってないけれど)


どれもDB接続&操作、DOM/SAX、CSV出力、正規表現には問題ない言語だと思います。

なお、EXCELは確かExcel2007以前は65536行のデータしか扱えないので

大量のデータの取り扱いは不便です。(6万件程度のデータならいいかもしれませんが)


ということで結論としては

・Java

・Perl

・PHP

ということになります。

上記の言語を知っていたら、その言語を使うことが無難でしょう。

少なくとも6万件を超えるような大量データは古いEXCELでは無理です。

また、6万件を超えるようなCSVは古いEXCELでは表示すらされません。

となると、自分でもDBを持つ必要があるかもしれませんね...

id:Hajimex

いろいろ記入していなくて申し訳ありません。

そうなんです、HTMLで返されます。

それぞれの長所短所を教えて頂きありがとうございました。

JAVAが早いんですね、

PHPはかじったことがあるのでその2つから選ぶことになりそうです。

ありがとうございます。

2010/10/11 23:29:11
id:deflation No.3

deflation回答回数1036ベストアンサー獲得回数1262010/10/11 11:25:52

ポイント20pt

わざわざクローラーをつくる必要はありませんし、下手にクローラーを作ると逮捕されるようですので(Librahack事件)、既成ソフトの組み合わせで対応するのが無難かと思います。


Irvineフリー版で目的のHTMLファイルをダウンロードし、HC95を使ってCSV形式に変換してはいかがでしょう。

id:online_p No.4

online_p回答回数1153ベストアンサー獲得回数592010/10/11 11:50:48

ポイント20pt

wgetで落として、それをsedでexcel型に書き換えですね。

id:a-kuma3 No.5

a-kuma3回答回数4624ベストアンサー獲得回数19592010/10/11 08:18:33

ポイント20pt

こういった質問が出るということは、スクリプト系の言語が苦手ってことですよね。

ページのダウンロードと、HTML のテーブルからデータを抽出するのを分けたらどうですか?

データをごっそり落とすのは、ダウンロード系のツールで。

ローカルのファイルとして落としたファイルからデータを抽出するのは VBA で。

id:Hajimex

なるほど。

ありがとうございます。

そのとおりスクリプト系は苦手です。

2010/10/11 23:30:28
id:niwa-mikiho No.6

niwa-mikiho回答回数508ベストアンサー獲得回数382010/10/12 00:52:49

ポイント10pt

改行場所や

などの要素がどのようになっているのか分かりませんが、 落とした HTML の
の範囲 (
は含めず) を EmEditor や Terapad など、高機能なテキストエディタに貼り付けて処理できます。
を \t へ置換
を文字列0の空文字へ置換 (
が削除されます)
を文字列0の空文字へ置換 (
が削除されます)
これでタブ区切りのファイルが出来ます。 csv にしたいのであれば、\t を , へ置換してください。

id:ardarim No.7

ardarim回答回数897ベストアンサー獲得回数1452010/10/14 01:06:05

ポイント10pt

ExcelのWebクエリ機能を使うのはどうでしょうか。

≫ エクセルのWebクエリを使って動的にデータを取得する方法≫ Weblet


URLを指定して、テーブルをExcelシートに取り込む機能です。

URLは、「https://www.ris-asia.com/rakutensec/quote.jsp?ric=["クエリパラメータ名", "ダイアログメッセージ001"].T&c=ja&p=quote&c=ja&ind=1」のように、一部をパラメータで指定して、特定のセルで指定した値とパラメータをリンクさせることができます。(セルの値を書き換えると、セルのパラメータを使ってテーブルが自動的に更新される)

例えば、セルに「7203」という値を入力すると、URL「https://www.ris-asia.com/rakutensec/quote.jsp?ric=7203.T&c=ja&p=quote&c=ja&ind=1」に自動的にアクセスして、自動的にテーブルをシートに展開してくれます。


ちょっとわかりにくい機能ではあるのですが、とりあえず上のページの通り操作すれば使い方はわかります。使い方がわかるとかなり便利な機能であることがわかっていただけると思います。

id:Silvanus No.8

Silvanus回答回数174ベストアンサー獲得回数672010/10/16 13:26:35

ポイント10pt

コメント欄が開かないので、已むを得ず2回目の書き込みいたします。

もし目的のデータが、単にHTMLのテーブル内に格納されているだけならば

deflationさんがお書きになっているHC95等を使って一気にCSVまで持って行くか、

或いは、正規表現を利用して、HTMLソースから目的のデータを引き抜いてくることが

容易にできそうなのであれば、online_pさんご推薦のSedが宜しいかと思います。

何れの場合でも、GETHTMLWやIrvine、wget等でHTMLソースを

ローカルの保存領域に落としてから処理を行なうべきです。

---

さて「これらの方法では対応できない」となった場合の話ですが、

「これを契機に本格的にプログラミングを学習したい、その時間も熱意もある」ということで

あるならば、dev_zer0さんが仰せの様にJava、Perl、PHP等を勉強されるのも良いかと思います。

しかし、私感に過ぎませんが、恐らくそういうことではないのではないでしょうか。

ご質問文の中に"EXCEL"が登場していることから、恐らくは

・普段からExcelをお使いになっている。

・しかしVBAは得意ではない。

・研究データの保存や処理は基本的にExcelで行なっている。

・大規模なデータとはいってもExcelで扱いきれない程大きくはない。

ということではないでしょうか。

もしそうであればExcel VBAを学ばれることをお奨めいたします。私自身も研究職ですが

高度な統計や精細なグラフ描画は他のアプリでやらせているものの、

データの保存・整理そのものはExcelで行なっており、

VBAの勉強が日々非常に役に立っています。実行速度では確かに劣りますが、

貴方が普段からExcelをお使いであるならば、

VBAを学ばれることにより受けられる恩恵は

JAVAやPerl、PHP等を勉強されるよりも格段に大きいと思います。

因みに、差し支えなければ、ですが、その

「とあるデータベース系のウェブサイト」の正体を明かしていただけませんか。

HC95やSedで対応できない場合には、何かお手伝いできることがあるかも知れませんので。

  • id:Silvanus
    回答が開けられていませんが、データベースの取り込みは結局できたのでしょうか。
    できたのならば良いのですが。残念ながらできていなくて、且つ、差し支えなければ、ですが、
    目的のデータベース系ウェブサイトがどこなのか、教えていただけませんか。
    何かお役に立てるかも。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません