読者です 読者をやめる 読者になる 読者になる

三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク



XXXXさんへ VBS IE操作でBlogにログイン ブログの入力・登録処理

VBS IE操作でBlogにログイン ブログの入力・登録処理

下記の質問をいただきました。


>https://www.so-net.ne.jp/blog/
>を自動で開き、IDとパスワードを入れて、ログインを押し、
>新規作成を押して、表示されるブログの記事作成画面で、
>タイトルと記事にEXCELで記載しておいた文章を入力させて、
>さらに、タグにもEXCELに記載しておいた文章を入力させて、
>タグ追加を行い、
>保存ボタンを押させたいです。
>どのようにしたら処理ができるのでしょうか?


ログイン

ログイン処理は、イロイロあるけど、
IDを探して、データセット、ボタンを押す感じかなぁ。

手前味噌サンプルだと

「ログイン」の検索結果一覧 - ken3memo (三流君)
http://d.hatena.ne.jp/ken3memo/archive?word=%A5%ED%A5%B0%A5%A4%A5%F3

から、探して、

VBS で IEを使用して楽天市場にログインしてみた - ken3memo (三流君)
http://d.hatena.ne.jp/ken3memo/20110721/1311244241

↑に探し方?調査方法が載っているので、参考にしてください。

ブログの入力、登録

ブログの登録もログイン同様に
IDやNameを探して、.valueにデータをセットしたり、
ボタンを.Clickでクリックしたりするパターンかなぁ。

ログイン後の画面なので、あまりサンプルが無いんだけど、処理で似ているのは、

「ブログの入力」の検索結果一覧 - ken3memo (三流君)
http://d.hatena.ne.jp/ken3memo/archive?word=%A5%D6%A5%ED%A5%B0%A4%CE%C6%FE%CE%CF

から、OCNのブログだけど、

5/27 IE操作 Access の フォームから ブログの入力フォーム(Webページ)へ転記する - ken3memo (三流君)
http://d.hatena.ne.jp/ken3memo/20090527/1243431779
でチラっと紹介されている、
2009-05-27 ソースをMDBに保存 と ブログへ登録
http://ie.vba-ken3.jp/sample/004/2009-05-27.html

↑が少し、参考になるかなぁ。※IDとかNameが違うので、そのまま使えないんだけど。。。

ログイン後の知りたい処理が書いてない 書きかけのコード

下記、ログイン後の知りたい処理、ブログの登録が書いていないコードです。

'VBS ログイン後、ブログへ登録、書きかけ
'(※ http://ie.vba-ken3.jp/sample/004/2009-05-27.html を参考に自分のブログ用にアレンジしてください...)

    'IEのオブジェクトを作成する
    Set objIE = CreateObject("InternetExplorer.application")
    objIE.Top = 100
    objIE.Left = 100
    objIE.Width = 1024

    objIE.Visible = True

    'ページを開く(.Navigateで表示する。)
    objIE.Navigate "http://blog.so-net.ne.jp/"
    Wscript.Sleep 1000   '1000で1秒

    '読み込み完了となるまで、ループする。
    While objIE.ReadyState <> 4 Or objIE.Busy  'READYSTATE_COMPLETE = 4
        Wscript.Sleep 100   '0.1秒待つ、1000で1秒
    Wend
    Wscript.Sleep 1000   '1秒

    'リンクを探す
    'ログイン ボタンを探して押す
    '<a href="javaScript:login_url();"><img src="/_common/img/header/login_sts_login.gif" alt="ログイン" /></a>
    'Aのタグを集める .getElementsByTagName("A")を使用
    Set objA = objIE.Document.getElementsByTagName("A")

    'ループで頭からhtmlが alt=ログイン を探す
    For n = 0 To objA.Length - 1
        '※ HTMLのalt=ログインを探したいので、.InnerTextでもなく.Valueでもなく .OuterHTMLを使用
        If Instr(objA(n).OuterHTML,"ログイン") > 0 Then  'HTML文字列の中から見つけたら
            objA(n).Click  '見つけたINPUTタグのオブジェクトをクリック
            WScript.Sleep  1000  '1秒待つ 1000で1秒
            Exit For
        End If
    Next
    'HTMLから探すから全て .OuterHTMLを使用してもいいかなぁ(ほかの時も、いつもOuterHTMLでも)

    Set objINPUT = Nothing  'オブジェクト変数解放

    '読み込み完了となるまで、ループする。
    While objIE.ReadyState <> 4 Or objIE.Busy  'READYSTATE_COMPLETE = 4
        Wscript.Sleep 100   '1000で1秒
    Wend
    Wscript.Sleep 1000   '1000で1秒

'この先のページで、IDとパスワードをセットする。セット後またログインを押すんだけど・・・
    'h2>So-net ユーザID ログイン</h2>

    'ユーザーID
    'input type="text" name="SSO_COMMON_ID" class="inputStyle" value="例&nbsp;yamadataro@ab3" size="30" maxlength="50" />
    '↑name="SSO_COMMON_ID"があるので、これを使い
    objIE.Document.All("SSO_COMMON_ID").Value = "testID@xxx"  'IDをセットする

    '次は、パスワードのセット
    'input type="password" name="SSO_COMMON_PWD" class="inputStyle" value="" size="30" maxlength="50" 
    '↑これも、名前が付いているので、 name="SSO_COMMON_PWD"を使う
    objIE.Document.All("SSO_COMMON_PWD").Value = "123456"  'パスワードをセットするをセットする

    'ログインボタンを押す
    'input name="" type="image" src="/blog/common/images/login/button_login.gif" value="ログイン" id="loginformsubmit" 
    '↑ログインの文字を探してもいいけど、id="loginformsubmit" があるので、これをクリックする
    objIE.Document.All("loginformsubmit")(0).Click  '指定したIDをクリック

    '読み込み完了となるまで、ループする。
    While objIE.ReadyState <> 4 Or objIE.Busy  'READYSTATE_COMPLETE = 4
        Wscript.Sleep 100   '1000で1秒
    Wend
    Wscript.Sleep 1000   '1000で1秒

'次に、この先のページで、ブログのタイトルとか、セットしたりするんだけど・・・

    'タイトルセット

    '本文セット

    'タグを処理

    '書き込みボタン? or 送信ボタンを押す

    '書き込み完了を待つ


'ログアウト処理

    'ログアウトボタンを押して、ログアウトする(これは無くてもいいかも)

'IEを閉じたり、後始末

    'objIE.Quit    'IEを閉じたり、後始末をする

終わりのあいさつ

ログイン先が不明なので・・と言い訳して、
中途半端なコードを紹介。
何かの参考となれば、、、

いつものように 逃げるように退散する三流プログラマーでした。