WebBrower的应用:社区结贴处理(十一)

Author:水如烟

 

写这些代码并非表示赞成自动结贴。认真提问,也该认真结贴。

在一些场合,可以自动结贴,或辅助结贴,比如:

交流贴,强制结贴(数量多的情形)。

 

Namespace  Csdn.Community
    
' '' <summary>
     ' '' 结贴
     ' '' </summary>
     Public   Class  TopicView2
        
Private  gGiveTipElement  As  HtmlElement
        
Private  gPasswordElement  As  HtmlElement

        
Private   Const  gFlag  As   String   =   " community.csdn.net/Expert/TopicView2.asp "

        
Private  gUserPassword  As   String

        
Private  gIssue  As   New  Issue
        
Private  gReplys  As   New  List( Of  Reply)

        
Public   Sub  SetTopicView2( ByVal  TopicView2Doc  As  HtmlDocument)
            gPasswordElement 
=   Nothing
            gGiveTipElement 
=   Nothing

            gUserPassword 
=   Nothing

            gIssue.Clear()
            gReplys.Clear()

            
If   Not  IsValid(TopicView2Doc)  Then   Return

            gGiveTipElement 
=  TopicView2Doc.All.Item( " GiveTip " )
            gPasswordElement 
=  gGiveTipElement.All.Item( " userpassword " )

            Initialize()
        
End Sub

        
Public   Shared   Function  IsValid( ByVal  doc  As  HtmlDocument)  As   Boolean
            
If  doc  IsNot   Nothing   Then
                
Return  doc.Url.AbsoluteUri.IndexOf(gFlag)  >   - 1
            
End   If
            
Return   False
        
End Function

        
Private   Sub  Initialize()

            gUserPassword 
=  gPasswordElement.GetAttribute( " Value " )

            gIssue.SetTopicView2(gGiveTipElement)

            
Dim  mValidReplyNum  As   Integer   =   0   ' 有效回贴数

            
With  gGiveTipElement.All.GetElementsByName( " T " ).GetEnumerator
                
While  .MoveNext
                    
Dim  mReply  As   New  Reply
                    mReply.SetTopicView2(
CType (.Current, HtmlElement))

                    
Me .gReplys.Add(mReply)

                    
' 回复人是否是贴主
                     If   Not  mReply.PostUserName.Equals( Me .Issue.PostUserName)  Then
                        mValidReplyNum 
+=   1
                    
End   If
                
End   While
            
End   With

            gIssue.SetValidReplyNum(mValidReplyNum)
        
End Sub

        
' '' <summary>
         ' '' 结贴密码
         ' '' </summary>
         Public   Property  UserPassword()  As   String
            
Get
                
Return  gUserPassword
            
End   Get
            
Set ( ByVal  value  As   String )
                
If   Me .gPasswordElement  Is   Nothing   Then   Return

                gUserPassword 
=  value
                gPasswordElement.SetAttribute(
" Value " , value)
            
End   Set
        
End Property

        
' '' <summary>
         ' '' 贴子
         ' '' </summary>
         Public   ReadOnly   Property  Issue()  As  Issue
            
Get
                
Return  gIssue
            
End   Get
        
End Property

        
' '' <summary>
         ' '' 回复
         ' '' </summary>
         Public   ReadOnly   Property  Replys()  As  List( Of  Reply)
            
Get
                
Return  gReplys
            
End   Get
        
End Property

        
' '' <summary>
         ' '' 平均回贴分
         ' '' </summary>
         Public   Sub  AveragePoint()
            
If   Me .gPasswordElement  Is   Nothing   Then   Return

            
If   Me .Issue.ValidReplyNum  <   1   Then   Return

            
Dim  mTotal  As   Integer   =   Me .Issue.Point  ' 总分
             Dim  mValidNum  As   Integer   =   Me .Issue.ValidReplyNum  ' 有效回贴数
             Dim  mAvg  As   Integer   =   0    ' 平均得分
             Dim  mRem  As   Integer   =   0   ' 余数

            mAvg 
=  Math.DivRem(mTotal, mValidNum, mRem)

            
' 前mRem个回贴的得分为mAvg + 1
             ' 后mValidNum-mRem个回贴的得分为mAvg

            
Dim  mIndex  As   Integer   =   - 1
            
For   Each  p  As  Reply  In   Me .Replys
                
If  p.PostUserName  <>   Me .Issue.PostUserName  Then
                    mIndex 
+=   1
                    
If  mIndex  <  mRem  Then
                        p.Point 
=  mAvg  +   1
                    
Else
                        p.Point 
=  mAvg
                    
End   If
                
End   If
            
Next

        
End Sub

        
' '' <summary>
         ' '' 结贴
         ' '' </summary>
         ' '' <param name="pass">结贴时所需密码</param>
         Public   Sub  Submit( ByVal  pass  As   String )
            
Me .UserPassword  =  pass
            Submit()
        
End Sub

        
' '' <summary>
         ' '' 结贴
         ' '' </summary>
         Public   Sub  Submit()
            
If   Me .gPasswordElement  Is   Nothing   Then   Return

            
Me .gGiveTipElement.InvokeMember( " submit " )
        
End Sub
    
End Class
End Namespace

 

Imports  System.Text.RegularExpressions

Namespace  Csdn.Community
    
' '' <summary>
     ' '' 回复
     ' '' </summary>
     Public   Class  Reply
        
Inherits  User

        
Private  gElement  As  HtmlElement

        
Private  gPostDateTime  As   Date
        
Private  gPoint  As   Integer
        
Private  gReplyID  As   Integer
        
Private  gContent  As   String

        
' '' <summary>
         ' '' 回复时间
         ' '' </summary>
         Public   ReadOnly   Property  PostDateTime()  As   Date
            
Get
                
Return  gPostDateTime
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 得分
         ' '' </summary>
         Public   Property  Point()  As   Integer
            
Get
                
Return  gPoint
            
End   Get
            
Set ( ByVal  value  As   Integer )
                gPoint 
=  value
                gElement.SetAttribute(
" Value " , value.ToString)
            
End   Set
        
End Property
        
' '' <summary>
         ' '' 回复ID
         ' '' </summary>
         Public   ReadOnly   Property  ReplyID()  As   Integer
            
Get
                
Return  gReplyID
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 内容
         ' '' </summary>
         Public   ReadOnly   Property  Content()  As   String
            
Get
                
Return  gContent
            
End   Get
        
End Property

        
Public   ReadOnly   Property  Element()  As  HtmlElement
            
Get
                
Return  gElement
            
End   Get
        
End Property

        
' '' <param name="ReplyElement">NameIsT</param>
         Public   Sub  SetTopicView2( ByVal  ReplyElement  As  HtmlElement)
            gElement 
=  ReplyElement

            gPoint 
=   CInt (gElement.GetAttribute( " Value " ))

            
With  gElement.Parent.Parent.All

                
Me .gReplyID  =   CInt (.Item( " ReplyID " ).GetAttribute( " Value " ))

                
With  Regex.Match(.Item( 5 ).InnerText,  " (.*?)/((.*?)/) " ).Groups
                    
Me .gPostUserName  =  .Item( 1 ).Value
                    
Me .gPostUserNickName  =  .Item( 2 ).Value
                
End   With

                
Me .gRankNum  =  Regex.Match(.Item( 7 ).GetElementsByTagName( " IMG " )( 0 ).GetAttribute( " src " ),  " .*//(.*?).gif " ).Groups( 1 ).Value
                
Me .gCredit  =   CInt (Regex.Match(.Item( 7 ).InnerText,  "/ d+ " ).Value)
                
Me .gPostDateTime  =   CDate (.Item( 9 ).InnerText)

            
End   With
        
End Sub

        
Public   Overrides   Function  ToString()  As   String
            
Return   String .Format( " 回复人:{0}({1}),信誉:{2} {3} 得分:{4},回复ID({5}) " , _
                
Me .PostUserName,  Me .PostUserNickName,  Me .Credit,  Me .PostDateTime,  Me .Point,  Me .ReplyID)
        
End Function
    
End Class
End Namespace

 

Imports  System.Text.RegularExpressions

Namespace  Csdn.Community
    
' '' <summary>
     ' '' 贴子
     ' '' </summary>
     Public   Class  Issue
        
Inherits  User

        
Private  gTopicID  As   Integer   =   - 1
        
Private  gTopicName  As   String   =   Nothing
        
Private  gRoomName  As   String   =   Nothing
        
Private  gReplyNum  As   Integer   =   - 1
        
Private  gPostDateTime  As   Date
        
Private  gPoint  As   Integer   =   - 1
        
Private  gReadNum  As   Integer   =   - 1
        
Private  gRoomId  As   Integer   =   - 1
        
Private  gEndState  As   Integer   =   - 1
        
Private  gContent  As   String   =   Nothing

        
Private  gValidReplyNum  As   Integer   =   - 1

        
' '' <summary>
         ' '' 贴子ID
         ' '' </summary>
         Public   ReadOnly   Property  TopicId()  As   Integer
            
Get
                
Return  gTopicID
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 标题
         ' '' </summary>
         Public   ReadOnly   Property  TopicName()  As   String
            
Get
                
Return  gTopicName
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 版块名称
         ' '' </summary>
         Public   ReadOnly   Property  RoomName()  As   String
            
Get
                
Return  gRoomName
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 回贴数
         ' '' </summary>
         Public   ReadOnly   Property  ReplyNum()  As   Integer
            
Get
                
Return  gReplyNum
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 提交时间
         ' '' </summary>
         Public   ReadOnly   Property  PostDateTime()  As   Date
            
Get
                
Return  gPostDateTime
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 总分
         ' '' </summary>
         Public   ReadOnly   Property  Point()  As   Integer
            
Get
                
Return  gPoint
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 人气数
         ' '' </summary>
         Public   ReadOnly   Property  ReadNum()  As   Integer
            
Get
                
Return  gReadNum
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 版块ID
         ' '' </summary>
         Public   ReadOnly   Property  RoomId()  As   Integer
            
Get
                
Return  gRoomId
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 状态值
         ' '' </summary>
         Public   ReadOnly   Property  EndState()  As   Integer
            
Get
                
Return  gEndState
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 内容
         ' '' </summary>
         Public   ReadOnly   Property  Content()  As   String
            
Get
                
Return  gContent
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 有效回复数(去除贴主回复)
         ' '' </summary>
         Public   ReadOnly   Property  ValidReplyNum()  As   Integer
            
Get
                
Return  gValidReplyNum
            
End   Get
        
End Property

        
Public   Sub  SetTopicView2( ByVal  IssueElement  As  HtmlElement)

            
Me .gTopicID  =   CInt (IssueElement.All.GetElementsByName( " Topicid " ).Item( 0 ).GetAttribute( " Value " ))

            
Dim  mTable  As  HtmlElement  =  IssueElement.GetElementsByTagName( " Table " )( 0 )

            
With  mTable.All

                
Me .gTopicName  =  .Item( 4 ).InnerText

                
With  Regex.Match(.Item( 8 ).InnerText,  " (.*?)/s/((.*?)/) " ).Groups
                    
Me .gPostUserName  =  .Item( 1 ).Value
                    
Me .gPostUserNickName  =  .Item( 2 ).Value
                
End   With

                
Me .gRankNum  =  Regex.Match(.Item( 13 ).GetElementsByTagName( " IMG " )( 0 ).GetAttribute( " src " ),  " .*//(.*?).gif " ).Groups( 1 ).Value
                
Me .gCredit  =   CInt (.Item( 18 ).InnerText)
                
Me .gReadNum  =   CInt (.Item( 22 ).InnerText)
                
Me .gRoomName  =  .Item( 26 ).InnerText
                
Me .gPoint  =   CInt (.Item( 30 ).InnerText)
                
Me .gReplyNum  =   CInt (.Item( 35 ).InnerText)
                
Me .gPostDateTime  =   CDate (.Item( 39 ).InnerText)
            
End   With

        
End Sub

        
Public   Sub  SetValidReplyNum( ByVal  num  As   Integer )
            gValidReplyNum 
=  num
        
End Sub

        
Public   Overrides   Sub  Clear()
            
MyBase .Clear()
            gTopicID 
=   - 1
            gTopicName 
=   Nothing
            gRoomName 
=   Nothing
            gReplyNum 
=   - 1
            gPostDateTime 
=   Nothing
            gPoint 
=   - 1
            gReadNum 
=   - 1
            gRoomId 
=   - 1
            gEndState 
=   - 1
            gContent 
=   Nothing
            gValidReplyNum 
=   - 1
        
End Sub
    
End Class
End Namespace

 

Namespace  Csdn.Community
    
' '' <summary>
     ' '' 用户
     ' '' </summary>
     Public   Class  User
        
Protected  gPostUserID  As   Integer   =   - 1
        
Protected  gPostUserName  As   String   =   Nothing
        
Protected  gPostUserNickName  As   String   =   Nothing
        
Protected  gCredit  As   Integer   =   - 1
        
Protected  gRankNum  As   String   =   Nothing

        
' '' <summary>
         ' '' 帐号ID
         ' '' </summary>
         Public   ReadOnly   Property  PostUserID()  As   Integer
            
Get
                
Return  gPostUserID
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 帐号
         ' '' </summary>
         Public   ReadOnly   Property  PostUserName()  As   String
            
Get
                
Return  gPostUserName
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 昵称
         ' '' </summary>
         Public   ReadOnly   Property  PostUserNickName()  As   String
            
Get
                
Return  gPostUserNickName
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 信誉分
         ' '' </summary>
         Public   ReadOnly   Property  Credit()  As   Integer
            
Get
                
Return  gCredit
            
End   Get
        
End Property
        
' '' <summary>
         ' '' 级别标记
         ' '' </summary>
         Public   ReadOnly   Property  RankNum()  As   String
            
Get
                
Return  gRankNum
            
End   Get
        
End Property

        
Public   Overridable   Sub  Clear()
            
Me .gPostUserID  =   - 1
            
Me .gPostUserName  =   Nothing
            
Me .gPostUserNickName  =   Nothing
            
Me .gCredit  =   - 1
            
Me .gRankNum  =   Nothing
        
End Sub
    
End Class
End Namespace

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Python中的webbrowser模块提供了一些方法来控制Web浏览器的行为。以下是一些常用的方法: 1. webbrowser.open(url, new=, autoraise=True):打开指定的URL地址,new参数指定打开方式(表示在同一窗口中打开,1表示在新窗口中打开,2表示在新标签页中打开),autoraise参数指定是否将浏览器窗口置于最前面。 2. webbrowser.open_new(url):在新窗口中打开指定的URL地址。 3. webbrowser.open_new_tab(url):在新标签页中打开指定的URL地址。 4. webbrowser.get(using=None):返回一个浏览器控制器对象,可以用来控制浏览器的行为。 5. webbrowser.register(name, constructor, instance=None):注册一个浏览器控制器,可以用来控制指定的浏览器。 6. webbrowser.BackgroundBrowser:表示一个后台浏览器控制器,可以在后台打开浏览器窗口。 7. webbrowser.Chrome:表示一个Chrome浏览器控制器,可以用来控制Chrome浏览器。 8. webbrowser.Firefox:表示一个Firefox浏览器控制器,可以用来控制Firefox浏览器。 9. webbrowser.Opera:表示一个Opera浏览器控制器,可以用来控制Opera浏览器。 10. webbrowser.Safari:表示一个Safari浏览器控制器,可以用来控制Safari浏览器。 以上是webbrowser模块的一些常用方法和属性,可以用来控制浏览器的行为。 ### 回答2: Python是一种非常强大的编程语言,可以用来编写各种类型的应用。其中,Web应用是Python编程中的一个重要领域。在Web应用中,可能需要打开浏览器并访问某个网址或者页面,而Python提供了webbrowser模块的方法可以实现这一功能。 Webbrowser模块中的方法可以在浏览器中打开URL地址,也可以在默认浏览器中打开指定文件。 下面是webbrowser模块的几个常用方法: webbrowser.open(url, new=0, autoraise=True) 该方法可以在浏览器中打开url地址,并且根据new参数的设置在新窗口或同一窗口进行浏览。 webbrowser.open_new(url) 该方法可以在浏览器中打开一个新窗口,并且访问指定的url地址。 webbrowser.open_new_tab(url) 该方法可以在浏览器中打开一个新的标签页,并且访问指定的url地址。 通过webbrowser模块的方法可以实现在python代码中直接打开浏览器并访问指定的url地址或者文件,同时也可以指定打开的方式。这对于Web应用程序的开发非常重要。 总结一下,webbrowser模块是Python中的一个非常有用的模块,能够方便我们打开URL地址或者指定的文件,在Web应用程序的开发中可以起到非常重要的作用。 ### 回答3: Python是一种功能强大的编程语言,它在多个领域都有广泛的应用。在Web开发中,Python也有很多优秀的库和框架。其中,webbrowser是Python内置的一个模块,它提供各种打开浏览器的方法,方便我们在程序中控制浏览器的各种操作。 webbrowser模块提供的方法有以下几种: 1. webbrowser.open(url, new=0, autoraise=True):这是最常用的方法之一,用来打开指定的URL。其中,url参数是要打开的网址;new参数表示打开方式,0表示在当前窗口打开,1表示在新窗口打开,2表示在新标签页打开;autoraise参数表示是否将窗口置于最前。这个方法会自动调用系统默认的浏览器。 2. webbrowser.open_new(url):等同于webbrowser.open(url, 1)。 3. webbrowser.open_new_tab(url):等同于webbrowser.open(url, 2)。 4. webbrowser.get(using=None):返回一个可用的浏览器实例,可以用来执行更多的浏览器操作。using参数用来指定使用的浏览器类型,如果不指定则使用默认浏览器。 5. webbrowser.register(name, constructor, instance=None):注册自定义的浏览器类型。其中,name参数指定浏览器的名称,constructor参数是一个函数,返回一个浏览器对象的实例,instance参数可以用来指定已经存在的浏览器对象。 使用webbrowser模块非常简单,只需要导入模块就可以直接调用方法。下面是一个简单的例子,演示了如何使用webbrowser模块打开指定的网址: ``` import webbrowser url = 'https://www.baidu.com/' webbrowser.open(url) ``` 这样就可以打开百度首页了。如果想在新窗口或新标签页中打开,只需要修改第二个参数即可: ``` import webbrowser url = 'https://www.baidu.com/' webbrowser.open(url, 1) # 在新窗口中打开 webbrowser.open(url, 2) # 在新标签页中打开 ``` 总之,webbrowser模块是Python内置的一个非常方便的模块,可以帮助我们控制浏览器的行为,实现自动化操作等。如果你在Web开发中需要执行一些自动化任务,或者需要控制浏览器的一些交互行为,那么这个模块肯定能够满足你的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水如烟

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值