`
lj6684
  • 浏览: 972646 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Ruby实现论坛自动回帖积分

    博客分类:
  • Ruby
阅读更多
因为某个论坛突然出现积分限制要求,专区必须500分才可进入,苦坏我这种只看帖不回帖的人了,虽然注册了有1年多了,但积分才有可怜的几十点,什么时候能熬到500分啊!
回贴1次给积1分,这种没营养的回帖工作就交给程序去完成吧!

想起前一阵子用过Watir自动提交网页信息,正好用它来试试;刚一上手,发现光有Watir还不够,因为程序还要能够自动找到每页帖子地址,就是需要分析HTML页面内容,查查资料,发现Hpricot就是专门做这个地,双管齐下!

Hpricot Ruby的专用HTML解析工具,基于XPath语法,用起来比较简单,非常不错~
Hpricot主页地址:http://wiki.github.com/why/hpricot
安装
gem install hpricot

程序源代码如下
require "watir"
require "rubygems"
require "hpricot"
require "open-uri"

ie = Watir::IE.new
ie.speed = :fast

#这里填写论坛“闲聊区”地址,只有这里是不限制积分的
doc = Hpricot(open('http://xxxx'))
#从页面信息中定位出每条帖子
doc.search("//tbody[@id]") do |idoc|
  #从每条帖子信息中定位出帖子相对地址URL
  idoc.search("//a[@target='_blank']") do |link|
    #拼装出帖子绝对地址
    url = "http://xxxx/" + link.attributes["href"]
    ie.goto(url)
    #设置回帖内容
    ie.text_field(:name, "message").set(":victory: :victory: 支持")
    #点击回复按钮
    ie.button(:id, "postsubmit").click
    #论坛要求回复时间>10秒
    sleep(10)
    #在帖子信息中通过寻找<a>标签每次都找到2个同样的,我只需要一个,用完即退出
    break
  end
end


现在的方法还比较笨,程序不会在帖子索引页自动向后翻页,每次程序运行就是回复指定页面中的30条帖子(积30分),不过已经很好了,运行了几次,现在已经200多分了~~~,看来500分并不遥远哦!
分享到:
评论
3 楼 Hooopo 2010-03-25  
分呢?
2 楼 lj6684 2009-10-11  
takingoff 写道
不需要登陆吗?

先手动登录一次论坛,选择保存登录状态1个月(论坛都提供类似功能),再次通过Ruby启动IE登录论坛就不需要出示用户身份了
1 楼 takingoff 2009-10-09  
不需要登陆吗?

相关推荐

Global site tag (gtag.js) - Google Analytics