tagCANDY CGI VBレスキュー(花ちゃん) - WebBrowserを使って通販サイトへのログイン例(VB.NET) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
WebBrowserを使って通販サイトへのログイン例(VB.NET)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

WebBrowserを使って通販サイトへのログイン例(VB.NET) [No.323の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2013/02/15 08:10
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[インターネット][][]                                                *
* キーワード:ログイン,自動的に,IE,ボタンをクリック,テキスト入力,submit,         *
***********************************************************************************
'==================================================================================
'投 稿 日:2012.08.24
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:WebBrowserを使って通販サイトへのログイン例
'動作確認:WindowsVista/7 VB2010(VS2010 Pro) Framework 4 / ターゲットCPU:X86 IE 8.9
'[Option Compare Text][Option Explicit On][Option Infer On][Option Strict On]で設定
'==================================================================================

Form に WebBrowser コントロール 1個 と Button コントロールを2個貼り付けて
下記コードを試して見て下さい。

Public Class Form1

Private myUrl As Uri
Private SNo As Integer

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, _
         ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _
                                                Handles WebBrowser1.DocumentCompleted

   '目的のサイト以外を除外する(サイトにより不要な場合や仕様によりじゃまな場合もあります。)
  '都度 myUrl に入る url を入れ替える必要があります。
  ' Debug.Print(e.Url.ToString()) のようにして調べて見ればここを通るURLが解ります。

   If Not TypeName(sender) = "WebBrowser" Or e.Url <> myUrl Then
      Exit Sub
   End If

   With WebBrowser1
      Dim elem As HtmlElement = Nothing

      If SNo = 1 Then  '楽天の場合
         '下記の設定に関しては、下記のサンプルを参考にして調べて下さい。
         'http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=313
         'http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=314

         .Document.GetElementById("userid").SetAttribute("Value", "hogehoge@hoge.sakura.ne.jp")
         .Document.GetElementById("passwd").SetAttribute("Value", "Password")
         '下記の設定でログインボタンをクリックした方がサイトの書き直し等に対応し易いので。
         For Each elem In .Document.GetElementsByTagName("input")
            '要素=input の Type 属性 と value 属性の値を照合する
            If elem.GetAttribute("Type") = "Submit" And elem.GetAttribute("value") = "ログイン" Then
        'ログイン後続けて同様の作業をする場合は次に表示される画面のURLを指定する事
        'myUrl = New System.Uri("https://www.hogehoge.jp")
        'SNo = 4  とかしてそこで次の動作を書く事
               elem.InvokeMember("Click")
            End If
         Next
      End If

      If SNo = 2 Then   'そのまんま通販サイトの場合
         'パスワード等が間違っている場合、無限ループに陥るので。
         If .Document.Body.InnerText.IndexOf("ログインに失敗しました。") >= 0 Then
            Exit Sub
         End If

         'ログイン中の場合は、同じ URL でも違う画面が表示されエラーが発生するので。
         If .Document.Body.InnerText.IndexOf("不正なアクセスです。") >= 0 Then
      'エラーの場合表示する画面のURLを指定する
            myUrl = New System.Uri("https://www.sonomanma.co.jp")
            WebBrowser1.Navigate(myUrl)
            Exit Sub
         End If

         '下記の設定に関しては、下記のサンプルを参考にして調べて下さい。
         'http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=313
         'http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=314

         .Document.GetElementById("textfield").SetAttribute("Value", "hogehoge@hoge.sakura.ne.jp")
         .Document.GetElementById("textfield2").SetAttribute("Value", "Password")

         '下記のようにしてログインボタンをクリックした方がサイトの書き直し等に対応し易いので。
         For Each elem In .Document.GetElementsByTagName("input")
            '要素=input の Type 属性 と value 属性の値を照合する
            If elem.GetAttribute("Type") = "Submit" And elem.GetAttribute("value") = "ログイン" Then
               elem.InvokeMember("Click")
            End If
         Next
      End If

   End With
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
   '楽天の通販サイトの場合
   SNo = 1
   WebBrowser1.ScriptErrorsSuppressed = True
   myUrl = New System.Uri("https://www.rakuten.co.jp/myrakuten/login.html")
   WebBrowser1.Navigate(myUrl)
End Sub

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
   'そのまんま通販サイトの場合
   SNo = 2
   WebBrowser1.ScriptErrorsSuppressed = True
   myUrl = New System.Uri("https://www.sonomanma.co.jp/login.php")
   WebBrowser1.Navigate(myUrl)
End Sub

End Class


'そのまんま通販サイトのような場合、特別な設定になっており、同じ URL で表示しても条件により
'表示される画面が違うような場合があるので、事前にどのようになっているのかをよく確かめておいて下さい。
'(表示された画面のソースコード等を見るなりして)    

     ' 下記のようにしてログインボタンをクリックする事もできますが、サイト等を書き直しされた場合に
   ' 影響を受けやすいので、コードを変更する等の処置が多く発生する可能性がある。

     ' .Document.Forms(1).InvokeMember("Submit")
     ' .Document.GetElementsByTagName("input").Item(4).InvokeMember("Click")
     ' .Document.All.GetElementsByName("Submit").Item(0).InvokeMember("click")

メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ