【发布时间】:2015-07-13 13:55:07
【问题描述】:
如何从this website 抓取验证码 验证码图片。
我尝试了 MSHTML,但这个网站使用 java 脚本函数在它的 src 中显示检索验证码。请尝试回答我如何实现这一目标。
Imports MahApps.Metro.Controls
Imports System.Net
Imports System.Windows.Forms
Class MainWindow
Inherits MetroWindow
Private Sub MetroWindow_Loaded(sender As Object, e As RoutedEventArgs)
wb.Navigate("https://www.irctc.co.in/eticketing/loginHome.jsf")
AddHandler wb.LoadCompleted, AddressOf wb_Loaded
End Sub
Private Sub btngo_Click(sender As Object, e As RoutedEventArgs) Handles btngo.Click
Dim htmldoc As MSHTML.IHTMLDocument2 = wb.Document
Dim usrtxtdoc As MSHTML.IHTMLElement = htmldoc.all.item("j_username", 0)
Dim usrpwddoc As MSHTML.IHTMLElement = htmldoc.all.item("j_password", 0)
Dim captchadoc As MSHTML.IHTMLElement = htmldoc.all.item("j_captcha", 0)
usrtxtdoc.innerText = txtusrname.Text
usrpwddoc.innerText = txtpwd.Text
captchadoc.innerText = txtcaptcha.Text
End Sub
Private Sub wb_Loaded(sender As Object, e As System.Windows.Navigation.NavigationEventArgs)
MsgBox("Loaded")
Dim htmldoc As MSHTML.IHTMLDocument2 = wb.Document
Dim htmldoc2 As MSHTML.HTMLDocument = wb.Document
Dim captchaimg As MSHTML.HTMLImg = htmldoc.all.item("cimage", 0)
Dim bitmap As New BitmapImage
bitmap.BeginInit()
bitmap.UriSource = New Uri(wb.FindResource("captchaImage"))
bitmap.EndInit()
imgcaptcha.Source = bitmap
End Sub
Private Sub wb_Navigated(sender As Object, e As NavigationEventArgs) Handles wb.Navigated
lblwbstatus.Content = "Load Completed"
End Sub
Private Sub wb_Navigating(sender As Object, e As NavigatingCancelEventArgs) Handles wb.Navigating
lblwbstatus.Content = "Navigating Please wait"
End Sub
Private Sub lblwbstatus_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles lblwbstatus.MouseDoubleClick
wb.Refresh()
End Sub
End Class
你可以从this link下载源码
【问题讨论】:
-
我是新的 stackoverflow,所以请不要给我的问题打分感谢您编辑了我的问题,请不要给我打分,我真的需要解决方案
-
没有 jhonkiller,我是说当这个 CAPTCHA 被加载到 webbrowser 控件中时,它调用 java 函数来获取图像但是当你再次使用 SRC 调用这个 CAPTCHA 函数时,正如你在评论中所说的那样,它称为 CAPTCHA java单独运行并生成新的 captch 图像。我需要某种方法,以便我可以检索加载到 DOM 文档中的验证码图像
-
那是因为验证码存储在会话变量中。当您请求图像 URL 时,会话会刷新。让我想想是否有办法。你的最终目标是什么?