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分并不遥远哦!

你可能感兴趣的:(html,工作,IE,Ruby,rubygems)