如何在Visual Basic中循环此代码?

时间:2011-08-15 00:35:38

标签: vb.net web-scraping

我正在为青少年做一个朋友加法器,这就是我所拥有的。基本上你单击一个按钮,它会添加列表中选定的人,然后你必须再次点击它来添加下一个。事情是我需要知道如何循环这个,所以它只是继续向下移动列表自动添加人

    WebBrowser1.Navigate("www.teenspot.com/profiles/" & ListBox.SelectedItem & "/add")
    ListBox.SelectedIndex = ListBox.SelectedIndex + 2
    ' This is the "sleep" function.
    ' This makes your webbrowser finish loading before new action.

    Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete And WebBrowser1.IsBusy = False
        Application.DoEvents()
    Loop


    WebBrowser1.Document.GetElementById("confirm").InvokeMember("click")
我已经多次尝试使用do ... loop和for..next以及所有那些东西,但我仍然没有想到它。它的作用是,它只运行添加我的页面,而不是点击确认哪个是第二部分。我有点新的vb所以,如果有人可以帮助我真的很感激它

1 个答案:

答案 0 :(得分:0)

回答这个问题:

  

问题是我需要知道如何循环这样它只是继续向下移动列表自动添加人

要使用一个按钮添加列表中的所有朋友,请单击:
使用 For Each / Next

For Each item As String In ListBox1.Items
    WebBrowser1.Navigate("www.teenspot.com/profiles/" & item & "/add") 
    Do Until WebBrowser1.ReadyState = Complete And WebBrowser1.IsBusy=False        
       Application.DoEvents()    
    Loop    
    WebBrowser1.Document.GetElementById("confirm").InvokeMember("click")
Next

要仅添加所选的朋友,然后将所选的列表项向下移动一步以等待新的按钮点击,请执行以下操作:

If Not ListBox1.SelectedItem Is Nothing Then
    WebBrowser1.Navigate("www.teenspot.com/profiles/" & ListBox1.SelectedItem.ToString & "/add") 
    If Not ListBox1.SelectedIndex = ListBox1.Items.Count - 1 Then ListBox1.SelectedIndex += 1
    Do Until WebBrowser1.ReadyState = Complete And WebBrowser1.IsBusy=False        
       Application.DoEvents()    
    Loop    
    WebBrowser1.Document.GetElementById("confirm").InvokeMember("click")
End If

为此:

  

它只会通过添加我的页面运行,而不会点击确认哪个是第二部分。

我们必须知道如何编写HTML文档来研究它,是否有“确认”javascript-click-event的元素,还是只是一个post-form-b​​utton?我无法登录到网站,无法检查。 (而且我不是青少年所以我不会在那里创建一个帐户); - )

但是,我应该能够在没有InvokeMember的情况下执行点击。像这样:

WebBrowser1.Document.GetElementById("confirm").click()

我不是百分百肯定,但我想我之前就是这么做的。 如果按钮有一个像click =“AddFriend()”这样的javascript,也许你可以使用invokescript直接调用该函数而不是单击按钮,如下所示:

WebBrowser1.Document.InvokeScript("AddFriend()")