自己做了一个 Bloghelper 的博客自动采集发布工具,发到网上没想到很多 同志们 对此比较感兴趣,也有要求开源的,这个软件现在只是第一版,而且没有经过严格测试和优化的,估计里面存在不少问题,就先暂时先不开源了,要不然让明白人看见了说 误人子弟 了。
BlogHelper软件首页:
http://blog.csdn.net/garfield21/archive/2009/05/30/4225577.aspx
BlogHelper软件下载地址:
http://download.csdn.net/source/1364671
我会把这个软件开发过程中的一些心得体会写出来和大家分享一下。希望对大家能有所帮助,要是觉得不对,欢迎随时指出。不过不要打人啊,如果一定要打,也不要打脸啊,明天早上还要去早市买菜呢
技术简介:
自动获取:
现在流行的自动获取一般都是使用 HttpWebRequest 和 HttpWebResponse 技术,这种方法的优点是速度快,而且可以使用多线程技术,在自动获取时使用没有任何问题
自动发布:
自动发布则主要存在三种方式:HttpWebRequest /HttpWebResponse 、VS2005的WebBrowser控件 和 axWebBrowser 控件。
HttpWebRequest /HttpWebResponse
是最底层的一种方法,但是要求编程者的水平也相对高些,需要熟悉 HttpWebRequest /HttpWebResponse 的编程知识。其中信息在发布时,需要在发布时自动传递给服务器相关的Cookies信息,这个我没有好好研究,不知道怎么弄。
而且现在很多网站为了防止这个程序自动发帖,做了很多限制,有时在寻找正确的发帖方式时,可能会费些劲。
VS2005的WebBrowser控件 和 axWebBrowser 控件
这两个本质是都是一样的,都是微软的 web 浏览器,axWebBrowser 是比较早的版本,提供的接口和方法比较多,在具体编程时,要实现某一功能,可供选择比较多,编程起来也比较灵活。WebBrowser 是在VS2005中发布的对 axWebBrowser 进行封装的一个控件,提供的接口和方法相对来说少些。
整体思路:
本软件使用 axWebBrowser 来完成自动发帖功能。
首先使用Navigate()方法将当前浏览器的发帖页面,利用document对象实现对页面控件的赋值,通过提交form或者模拟单击Button来实现。
对页面控件赋值的方法:
myDoc = (mshtml.IHTMLDocument2)myBrowser.Document;
mshtml.IHTMLElement Element = (mshtml.IHTMLElement)myDoc.all.item(PubClass.BlogInfo[iIndexLogin, 4], 0);
Element.innerText = PubClass.Users[iIndexLogin, 1];
提交页面代码:
mshtml.IHTMLFormElement f1 = (mshtml.IHTMLFormElement)myDoc.all.item(PubClass.BlogInfo[iIndexLogin, 10], 0);
((mshtml.IHTMLFormElement)(f1)).submit();
模拟单击Button代码:
Element = (mshtml.IHTMLElement)myDoc.all.item(PubClass.BlogInfo[iIndexLogin, 11], 0);
Element.click();