用.net写一个简单的天涯顶贴机兼谈WebBrowser控件使用的一点心得

      最近朋友想在天涯发点广告,看到天涯上的卖茶的广告贴,觉得很有意思,问我能不能帮他写一个类似的程序。本来我想这种灌水机应该网上很多吧,谁知道上网一找,非常少,而且偶尔有也是收费的,于是我决定自己来试试写一个。由于本人是小菜,对什么HTTP协议之类的完全不懂,怎么办?只好使用WebBrowser控件来模拟登录或发贴的动作,所以这个顶贴机只能算是很简单的了,写在这里,也是想起到抛砖引玉的作用。目前这个顶贴机分两个版本,一个是专顶自己的贴,另一个是自动抓每个版块的前几名的贴子回复(类似灌水:))。其实原理都一样。

   先说一下我的思路,晚上回去把源码放出来。首先用webbrowser打开天涯,获取到填用户名和密码的框,填入后模拟提交。在读取用户的帖子列表URL,保存到本地XML文件。遍历地址,分别浏览帖子URL,获取回复框,自动填入预设的回复文字(预设的回复文字可以预先保存在本地的XML文件里),模拟提交,最后完成。说起来比较简单。就不多说了,回去放源码,代码阅读有问题的可以留言讨论。需要现成的程序的,可以留言,我会提供。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'程序运行时OPEN天涯首页
WebBrowser1.Navigate("http://www.tianya.cn")
End Sub
登录代码
更新贴子列表
回复帖子
 Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        Dim btnClick As HtmlElement = Nothing
        'Dim elementT As HtmlElement = Nothing
        Dim htmDoc As HtmlDocument

        If Not postUrl = WebBrowser1.Url.ToString Then
            Exit Sub
        End If

        If (WebBrowser1.ReadyState < WebBrowserReadyState.Complete) Then Exit Sub '未完全加载时不执行


        htmDoc = WebBrowser1.Document

      
        Try
            For Each a As HtmlElement In htmDoc.GetElementById("bbsPost").All
                If a.TagName.ToUpper = "TEXTAREA" Then
                    a.InnerText = postText
                ElseIf a.TagName.ToUpper = "INPUT" Then
                    If a.GetAttribute("value") = "回复(Ctrl+Enter)" Then
                        btnClick = a
                    End If
                End If

            Next
        Catch ex As Exception
            Exit Sub
        End Try


        If btnClick Is Nothing Then
            Exit Sub
        End If

        btnClick.InvokeMember("Click")
    End Sub
开始顶贴按钮
 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'Dim urlText As String()
        Dim fileXml, textXml As New Xml.XmlDocument
        Dim urlList, urlList2 As Xml.XmlNodeList

        If Button3.Text = "开始顶贴" Then
            Button3.Text = "停止顶贴"
            state = False
            
            fileXml.Load("posturl.xml")
            textXml.Load("posttext.xml")

            urlList = fileXml.SelectNodes("/post/posturl/url")
            urlList2 = textXml.SelectNodes("/post/text")

           
            For i As Integer = 1 To 1000
                For Each b As Xml.XmlNode In urlList2
                    For Each a As Xml.XmlNode In urlList
                        If state Then Exit Sub
                        postUrl = a.FirstChild.Value
                        WebBrowser1.Navigate(postUrl)
                        postText = b.FirstChild.Value
                        delay(75)
                    Next
                Next

            Next
        Else
            state = True
            Button3.Text = "开始顶贴"
        End If


    End Sub
View Code
  Public Sub delay(ByRef Interval As Double)
        Dim time As DateTime = DateTime.Now
        Dim Span As Double = Interval * 10000000 '因为时间是以100纳秒为单位。
        While ((DateTime.Now.Ticks - time.Ticks) < Span)
            Application.DoEvents()
        End While
    End Sub

 

转载于:https://www.cnblogs.com/beyond2010/archive/2013/01/22/2871295.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值