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

プログラムでブラウザを操作してデータをセットしたり、データを取得したりしたいです。

例えば、hatenaに自分のIDとパスワードをセットしてログインします。次に自分の質問を一つずつ変数にセット。全ての質問をテキストにはき出す。

というものを作りたいとした時、どういった技術を使うのが簡単で良いでしょうか?Win XPで実現できるものでお願いします。私ができるのは、VBAくらいです。あと少しJS。Perl,Ruby,UWSCなど以外でお願いします。VB.netのウェブブラウザコントロール、xmlhttprequestあたりがよいのでしょうか?

あと、各HTMLの要素にアクセスするにはどうしたらよいでしょうか?

●質問者: akaired
●カテゴリ:コンピュータ インターネット
✍キーワード:Hatena HTML js Perl Ruby
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● kn1967
●40ポイント

(1)どういった技術を使うのが簡単で良いでしょうか?


perlやRubyなどは除外という事のようですが、Webとの親和性が高く、

情報収集も容易なものを除外してしまうというのは論外だと私は思います。


それはさておき、XMLHTTPRequestについては、基礎中の基礎的なものですが、

以前の質問 http://q.hatena.ne.jp/1250623193 から3ヶ月ほどが過ぎ、

何か進展はありましたか? 進展が無いようであれば先はまだまだ遠いですし、

他に何を回答されても無理です。


(2)プログラムでブラウザを操作してデータをセットしたり、データを取得したりしたい


ブラウザを制御するための情報を収集することは非常に困難であり、また、

ブラウザが微妙にバージョンアップしただけで動かなくなったりしますので、

プログラムから直接、相手のサーバとやりとりする事を考えたほうが良いでしょう。


(3)各HTMLの要素にアクセス


DOMという仕様がありますので、まずはDOMについて学びましょう。

それと、DOMを操作するためのスクリプトの作り方についても学びましょう。

マネージ HTML DOM (Document Object Model) の使用


(4)注意事項


最近のWebサイトはプログラムからの自動攻撃を防ぐための措置を講じていたりしますので、

下手なプログラムでアクセスすると、サイトから弾き出されたりする可能性があります。

(攻撃とみなされて会員資格を失う可能性がありますし、しつこくすると、

不正アクセス防止法にひっかかる可能性だってありますので要注意。)


逆に、アマゾンやgoogleなどのようにウェルカムな所では、

プログラムからのアクセス用にAPIと呼ばれるものを用意してくれてたりしますので、

内容を解析して直接いじるというような面倒な事を行う必要は無くなりつつあります。


2 ● snow_leopard
●0ポイント

ブラウザ画面を加工したり、値を取得してどうこうなら、firefox+greasemonkey+javascriptでできるわけですが、

おっしゃられている程度のことなら、

wgetとshellスクリプトが簡単かと。


3 ● HALSPECIAL
●40ポイント

>各HTMLの要素にアクセスするにはどうしたらよいでしょうか?

ということで回答してみます。


xmlhttprequestだと、そのままではHTMLのDOMにアクセスできません。

未確認ですが、htmlfileでパースさせるとできるげです。

http://d.hatena.ne.jp/mobitan/20090829/1251542456


なので無難にHTMLのDOMを使いたいのであれば、IEのコントロールを使うのがよろしいかと思います。

ログインも難なくスルーできるのではないでしょうか。


その辺は、id:ken3memoさんのHPが参考になると思います。

http://www.ken3.org/vba/


4 ● mattn
●10ポイント

VBSというかWScriptですが...

Option Explicit
Dim xhr, n
Set xhr = CreateObject("Microsoft.XMLHTTP")
Call xhr.open("GET", "http://q.hatena.ne.jp/akaired/questionlist?mode=rss", False)
Call xhr.send()
For Each n in xhr.responseXML.selectNodes("/rss/channel/item")
WScript.Echo(n.selectSingleNode("description").text)
Next

RSSから取得しているので、もしかしたら質問文が途中で省略されているかもしれません。また全件ではありません。実行は

C:\>wscript my-questions.vbs

とコマンドプロンプトから実行です。

ファイルに落とす方法は、VBSがお分かりという事なので省きます。

※方法によっては全件取得も難しくないかと思いますよ。

関連質問


●質問をもっと探す●



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