网上的一些资料。转自博客园http://www.cnblogs.com/kongsheng/archive/2011/06/15/2081751.html
技术路线:
(1) 操作系统:Microsoft Windows Server 2003企业版
(2) 数据库管理系统:Microsoft sql Server 2005
(3) 程序设计工具:Visual Studio.Net 2005 (C#语言)
而Visual Studio.Net 2005 (C#语言),也属于那种图形控件拖拉,比较容易上手的编程工具.
首先,大体分析一下要实现"抢沙发"这一目的所要解决的问题.(个人观点,应该还有其他解决方案实现)
1\自动登陆
一\自动登陆.
对于固定的一个或者几个论坛,这个步骤的实现就比较简单了.
下面就以天涯为例,简要介绍一下自动登陆的实现流程.
首先就是把天涯的网址(www.tianya.cn)传递给一个WEBBROWSER控件.从而获得这个网页的HTML源码(点IE浏览器中的查看->源文件也可以看到)
HTML源码截选如下:
引用"
<!-- 社区弹出广告end --> < div class ="logintab" > < form method ="post" id ="login" name ="login" > < ul > < li > 用户 < input id =text1 name =vwriter size =12 maxlength ="16" onMouseOut ="this.style.backgroundColor='#ffffff'" onmouseover ="this.style.backgroundColor = '#E5F0FF'" class =inp > </ li > < li > 密码 < input id =password1 name =vpassword size ="12" maxlength ="18" type =password onMouseOut ="this.style.backgroundColor='#ffffff'" onmouseover ="this.style.backgroundColor = '#E5F0FF'" class =inp ></ li > < li > < input id ="button1" name ="button1" type ="button" onmouseout ="this.style.backgroundColor='#ffffff'" onmouseover ="this.style.backgroundColor='#E5F0FF'" class ="inp" value ="登录社区" onclick ="javascript :check_data();" />
HTML的源码(http://www.atongnet.cn/search.aspx?where=title&keyword=%D4%B4%C2%EB&cid=0&sdate=2007-09-13&edate=2008-09-14&clientDate=Sat%2C+13+Sep+2008+11%3A07%3A07+GMT)看起来有点晕,感觉没有什么头绪.
但只要大家稍微了解以下它的编码规则问题就迎刃而解了.其实,打个比方来说,就象咱们平时包装礼物时,大盒子套着小盒子一样,一层一层嵌套的,学过计算机的可能知道他的学名,叫DOM树.好了废话不多说,直接进入正题.
登陆网站我们无非就做了以下2件事情,
1、输入用户名和密码。
2、点登陆按钮。
就OK了。
那么如何来自动把自己的用户名和密码发给网站的服务器呢?
下面还是让我们把目光转回HTML代码的分析上来,请大家注意这里:
< li > 用户 < input id =text1 name =vwriter size =12 maxlength ="16" onMouseOut ="this.style.backgroundColor='#ffffff'" onmouseover ="this.style.backgroundColor = '#E5F0FF'" class =inp ></ li >
HtmlElement btnSubmit = wbMain.Document.All[ " button1 " ]; HtmlElement tbUserid = wbMain.Document.All[ " text1 " ]; HtmlElement tbPasswd = wbMain.Document.All[ " password1 " ];
tbUserid.SetAttribute( " value " , " samm2886 " ); tbPasswd.SetAttribute( " value " , " ****** " ); btnSubmit.InvokeMember( " click " );
经常混天涯的同志们可能都知道,天涯有这样一个功能,"按论题提交日期排列"----就是它,给我们抢沙发带来了很大的便利.
和自动登陆一样,再重复如下一个过程.
1\把要打开页面的地址传递给程序(以天涯杂谈"按论题提交日期排列"为例,代码如下:
wbMain.Navigate( " http://cache.tianya.cn/new/publicforum/articleslist.asp?strItem=free&Part=1&strSubItem=&strSubItem2= " );
</ table > < table width =640 border =0 cellspacing =0 > < tr > < td width =20 > < font face =wingdings color =blue > K </ font > </ td > < td width =370 >< a href ='http://cache.tianya.cn/publicforum/content/free/1/1153174.shtml' target ='_blank' > 问责建设部 --建筑节能房开企业历史欠账4000亿,怎么还?-答:拆分建设部 </ a ></ td > < td width =90 >< a href ='/browse/Listwriter.asp?vwriter=非将' target =_blank > 非将 </ a ></ td > < td width =35 align =center class =tdfont > 7 </ td > < td width =35 align =center class =tdfont > 2 </ td > < td width =90 align =center class =tdfont > 3-9 23:32 </ td > </ table >
看一下上面的HTML代码,大家就会发现以下信息:
1\回帖个数(这也是我们沙发党所最关系的:))(2)
2\连接地址href='http://cache.tianya.cn/publicforum/content/free/1/1153174.shtml'
(手动抢沙发一般都不注意这个信息,但自动抢没有它,就是比尔.盖次来,估计他也抢不上这个沙发)
3\文章标题
问责建设部 --建筑节能房开企业历史欠账4000亿,怎么还?- 答:拆分建设部
(呵呵,一般沙发党都是不看标题直接强的,哈哈,有没有它一样拉,哈哈)
4\就是文章的浏览个数(7)和提交时间了(用途不是很大)
做到这里基本就已经接近尾声了哈.....
接下来怎么做,答案很简单,一个字
"抢",哈哈.见到回复为0的帖子做为一个 抢沙发的机器人,你怎么能放过它.......
呵呵.
把提取出来的连接('http://cache.tianya.cn/publicforum/content/free/1/1153174.shtml' )
传给WEBBROWS对象......OK了,一个崭新的,没有回复的帖子就展现在你的面前..............
然后就是开动你的脑筋...想几句好词拉,我可没"抢沙发专业人士"那么有才,能整那么多古诗,呵呵.就退了求其次了,下载一个中文的歌词库,每次在里面随机抽取一句歌词吧,嘎嘎,后面别忘了来一句"天涯万岁"哈哈,否则容易被封号的.
总结一下,其实就需要掌握一个东西 WEBBROWSER控件的应用.整个程序就是重复4次变可
第一次:
输入天涯网址.并获得并设置用户\密码输入框,然后激发登陆按钮的点击事件.完成自动登陆
第二次:
输入天涯杂谈"按论题提交日期排列"网址,并提取出回复为0网页的连接.
第3次:
输入第2次提取出来的网址,获得并设置回复输入框,然后激发"发表"按钮的点击事件.抢沙发完成.....