例えば、hatenaに自分のIDとパスワードをセットしてログインします。次に自分の質問を一つずつ変数にセット。全ての質問をテキストにはき出す。
というものを作りたいとした時、どういった技術を使うのが簡単で良いでしょうか?Win XPで実現できるものでお願いします。私ができるのは、VBAくらいです。あと少しJS。Perl,Ruby,UWSCなど以外でお願いします。VB.netのウェブブラウザコントロール、xmlhttprequestあたりがよいのでしょうか?
あと、各HTMLの要素にアクセスするにはどうしたらよいでしょうか?
(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と呼ばれるものを用意してくれてたりしますので、
内容を解析して直接いじるというような面倒な事を行う必要は無くなりつつあります。
ブラウザ画面を加工したり、値を取得してどうこうなら、firefox+greasemonkey+javascriptでできるわけですが、
おっしゃられている程度のことなら、
wgetとshellスクリプトが簡単かと。
>各HTMLの要素にアクセスするにはどうしたらよいでしょうか?
ということで回答してみます。
xmlhttprequestだと、そのままではHTMLのDOMにアクセスできません。
未確認ですが、htmlfileでパースさせるとできるげです。
http://d.hatena.ne.jp/mobitan/20090829/1251542456
なので無難にHTMLのDOMを使いたいのであれば、IEのコントロールを使うのがよろしいかと思います。
ログインも難なくスルーできるのではないでしょうか。
その辺は、id:ken3memoさんのHPが参考になると思います。
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がお分かりという事なので省きます。
※方法によっては全件取得も難しくないかと思いますよ。
コメント(4件)
これさえできれば、ブラウザを立ち上げる必要は無いのですよね…?
例えば GetHTMLW の様にそれ単体で巡回処理を行えば良いのではと思うのですが。
(ブラウザ上から処理させるのはあまりにも非効率です)
> というものを作りたい
とあるので作る事が目的な様ですが、うーん。
実質的にこれが必須条件のようだから、こんなんでいいんじゃないの?
http://www.scriptbrowserk.com/sbkIntro.html
私も何かちょっとした作業に使えるかもしれません。ブックマークしておきました。
b-wind 様に → ★☆
> 情報収集も容易なものを除外してしまうというのは論外だと私は思います。
え? 質問はクライアントサイドでは?
> まずはDOMについて学びましょう
ええ??