tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
WebBrowserを使って通販サイトへのログイン例(VB.NET) ( No.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")




 [スレッド一覧へ] [親スレッドへ]