指定したTwitterアカウントの全ツイートを取得(暫定.NET版)

以前、ツイートのクローラーを perl で作ってみたのですが、

指定したTwitterアカウントの全ツイートを取得(perl版) | Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/860

この perl スクリプトは古い公式クライアントにしか対応していないので、現在のバージョンではクロールできません…ってな訳で、C# で作り直してみました。

通称「ツイートキャッチ ★★キュア」…★は各自考えるように、とか。

実行ファイルは、CrawlTwitter.0.1.zip をダウンロードしてください。ドキュメントとか一切ないけど、まぁ、暫定版ということで。
ソースコードのほうは、CrawlTwitter at master from moonmile/etc – GitHub にあります。

実行すると結構かかります。3000 ツイートで 15 分ぐらいなので、掛かり過ぎ。これは高速化する予定です。
「コピー」ボタンをクリックすると、グリッドの情報をクリップボードにコピーします。Excel などに貼りつけて使って下さい。

下にあるテキストボックスは、取得したドキュメントのソースですね。デバッグ用に表示しているので、コピーして使ってみてください。中身がわかります。

仕掛けとしては、「もっと見る」のボタン(アンカー)を javascript でクリックしています。C# から WebBrowser オブジェクト経由でクリックする場合は、下記のように

橋本商会 ≫ C#のWebBrowserコンポーネントからJavaScriptを実行
http://shokai.org/blog/archives/1234

ブックマーレットにするといいみたいです。詳しくは git のソースコードを見てください。


ちなみに、リンク先の質問に「逆にWebBrowserから情報を得られるのか?」という質問がありますが、ソースコードを見るとわかりますが、

HtmlDocument doc = webBrowser1.Document;

な形で、ブラウザの DOM が取得できます。これを使うと javascript から dom を使うのと同じように扱えます。なので、javascript 側から値を返す場合は、適当なタグを作っておいて、取り出した HtmlDocument オブジェクトから直接取り出せばいい(getelementbyidとか)のです。

カテゴリー: ツール, C# パーマリンク

指定したTwitterアカウントの全ツイートを取得(暫定.NET版) への4件のフィードバック

  1. maru のコメント:

    こんにちは。
    メッセージボックスで以下のエラーが出て、ツイートの取得ができないのですが、どこをいじればよろしいでしょうか?
    ——————————————————————————
    アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。[続行]をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。[終了]をクリックすると、アプリケーションは直ちに終了します。

    値をNullにすることはできません。
    パラメーター名:data
    ——————————————————————————

  2. masuda のコメント:

    暫定で作ったのでエラー処理をしてなくて、twitter.com の反応が鈍いと取得エラーになって、うまくいかないというのがあるんですよね。なので、「twitter.com」が空いている時間?がお勧めです。

    「ツイートの取得」のエラーって、どんな条件でエラーがでますか?
    最初の取得をしたときとか、取得をしている途中でエラーが出るとか、そんな風に伝えて頂けると対処しやすいかも。

  3. maru のコメント:

    ご返信ありがとうございます。

    アカウントを入力して[実行]を押して待っていても画面下にツイートが表示されないので、
    [中断]や[コピー]を押したのですが、
    [中断]や[コピー]を押すタイミングでメッセージボックスが現れ、上記のようなメッセージが表示されます。

    ですので、ツイートを取得している最中のエラーになるのでしょうか?

    • masuda のコメント:

      1.「確認」ボタンで、アドレスが有効であることを確認
       ブラウザに表示される。
      2.「実行」ボタンを押すと、クロール数のカウントがアップされるので、ひたすら待つ。
      3.「中断」「コピー」は押してはいけません。
       「中断」自体は適当な実装だったかも。

      そうすると、クロール数が3000ぐらいでストップするはずです…なんですが、止まりませんね。画面の仕様が変わって動かなくなっているのかも。

コメントは停止中です。