ㄚ琪自从测试源自部落格.网志人气排名提升与行销的不传秘技之灵感之后,感觉有一点小成就,紧接着就继续想说,无名虽然在台湾是个大咖,但是以世界的眼光来看,它还只是个眼中的小沙粒而已,要有写ReviewME的机会,就要用英文的语言跟人交际周旋,所以ㄚ琪想到用Google的Follower,中文译做追踪,什么是追踪?你可以直接参阅http://www.google.com/support/blogger/bin/answer.py?hlrm=zh_tw&answer=104226这个连结,就可以得知,追踪是用来部落格的忠实粉丝用的,当然这跟无名的谁来我家是有不同的用途,所以如果拿自动参访机用在Google的追踪功能上,也就无用武之地。
另外“追踪者”这个小工具,Google说非常地实用,它可以拓展你部落格的读者群,看到读者群这三个字,你有没看到$$$,你如果有Blogger的部落格,你可以不用吗?当然一定要用啰,而且我鼓励你用,因为Google也这样鼓励部落客要写介绍文章,喔,我觉得介绍文章没什么好写的,一定有很多人会写,ㄚ琪写了就变得很老梗了,但是要怎么个自动追踪,相信应该比较有人会有兴趣$$$,当然自动追踪是自动成为别人的粉丝,不是成为自己的粉丝,我们绝对不能强迫别人的选择权,但是可以决定自己的选择权,所以你可以自动地成为别人的粉丝,如果别人也喜欢你的部落格,相信他也会做你的粉丝,当然这只是根据无名的谁来我家的回访经验得知,ㄚ琪对这项论点上无法验证,所以只好自己做实验来看看啰!
依据之前的程式经验,我继续观察Blogger的‘成为网志的追踪者’的操作模式,很高兴Blogger有一个下一个网志,英文是Next Blog,只要你点击下去,就可以随机去拜访别人的部落格,我猜是随机啦,但是搞不好Blogger有在里面作手脚也不一定,不过不管有没有做都没关系,因为我们只是利用这个功能来自动拜访别人的部落格。
接下来就是比对部落格内容是否有追踪者的widget,这一个满好处理的,如果你拜访的部落格有装追踪者的小工具,那么接下来我们就可以找到他的blogid,当然ㄚ琪对C#的正规表示式,还真有点不熟,而且它的中译叫规则运算式,更觉得奇怪,不过好在他有范例可以参考,所以比对出blogid只需花费个几分钟就可以克服。之后我们再根据这个blogid来追踪他,当然也是是用Blogger的追踪连结,用webbrowser完全模拟自动订阅的技术不难,最后在一个有提交表单的页面,有花一些心思在上面,可以参考C# webbrowser submitting form可以获得解决,我把程式码贴在下供参考:
假设你有这样的表单原始码:
<form id="searchform" method="post" action="index.php"> <input type="text" class="search" name="s" id="s" value="" /> <input type="submit" value="Search" class="button" /> </form>
你的C#程式码可以这样写:
HtmlDocument objWbDoc = webbrowser1.Document; HtmlElement hElEnter = objWbDoc.GetElementById("s"); hElEnter.Focus(); hElEnter.SetAttribute("value", "testing search"); //set the textbox value foreach (HtmlElement vHEl in objWbDoc.Forms) //find the form element using their ID { string formEl = vHEl.GetAttribute("id").ToString(); if (formEl.ToLower() == "form_id") { try { vHEl.Children[0].Focus(); SendKeys.SendWait("{ENTER}"); //invoke the submit button } catch (NotSupportedException ex) { vHEl.InvokeMember("submit");//invoke the submit button } } }
参考使用套一套这可以用作你自己的程式码,这样你就可以做出自动成为别人粉丝的工具机了,相当好用!对了,其实测试期间,还是有发生javascript 发出alert事件,这当然得归功Blogger的太free了,而这也是我奉劝各位如果要玩免费的部落格的话,还是玩Blogger好了,当然商鞅变法一定会搞到自己,没错,好用的Blogger在这里,变成我程式的恶梦了,不过要关掉javascript的alert的功能,也不是没有可能,后来找到Microsoft Web Browser Automation using C#,学到原来要用下面这样的程式码:
private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
string alertBlocker = "window.alert = function () { }";
element.text = alertBlocker;
head.AppendChild(scriptEl);
}
}
不过你如果直接贴,会发现IHTMLScriptElement会有反白的错误出来:
搞了一阵子还知道原来这个类别是要引用COM中的Microsoft HTML object library,才知道原来C#除了命名空间之外,还有参考可以用,使用的方法,在C# 10就是在专案那边选加入参考,就有一堆参考让你选用,当然我们的标的是Microsoft HTML object library,因为这一段程式码,可以克服alert的事件发生,太好了,可继续自动拜访了!
后续,还是会有个事件发生,但是ㄚ琪还在研究中,事件的图片先贴出来,等有解了再公布答案: