屏蔽广告的原理、方法和实现:[3]封装成SDK
根据广告屏蔽的原理、方法和基本操作,对他们进行封装,以便以后的使用和二次开发。
工具/原料
VS2012集成开发环境。VS2010、VS2008、VS2005等均可以。
IE和IE开发者工具。IE8、IE9、IE10浏览器自带,其他较低的版本需要自己下载。
封装HDK
1、打开VS2012集成开发环境,新建“C#类库”工程,并命名为HDK,然后添加System.Windows.Forms和System.Drawing的引用。如图:
2、 然后,再添加新建winform工程,命名为HDKTest,引用程序集HDK,并设置为启动项,用于测试HDK。项目结构如图:
3、在HDK中添加类Element,这是HDK中的基础类。需要一个WebBrowser薪姚蟪食引用,是网页元素抓取的基础,最好在构造函数中赋值,并且不允许无参的构造函数,如下: public WebBrowser webBrowser; public Element(WebBrowser wb) { this.webBrowser = wb; }
4、封装直接元素抓取,即封装GetElementById、GetElementByPoint和GetElementByTagName函数。如下图:
5、接着封装间接元素抓取,即id-pn、id-tn以及从body元素开始的tn。如下:
6、元素抓取的操作基本封装完成了,下面要对抓取的元素进行操作的封装。使用style方法,我们需要考虑原来的style是否已经存在,若存在则修改,不存在则添加。如下图:
测试HDK
1、HDK的封装基本完成,下面是HDK的测试。打卡HDKTest项目的form1,添加一个TextBox控件、一个Button控件、一个WebBrowser着抹较氰控件,并把这些控件分别放到容器TableLayoutPanel中,布局效果如下图:
2、然后在button1的Click事件和webBrowser1的Document觊皱筠桡Completed事件中添加代码: private 即枢潋雳void button1_Click(object sender, EventArgs e) { //跳转到http://jingyan.baidu.com/article/fec4bce23e505cf2618d8bd3.html webBrowser1.Navigate("http://jingyan.baidu.com/article/fec4bce23e505cf2618d8bd3.html"); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { var em = new HDK.Element(this.webBrowser1); //id aside-ads-container,pn 1 var a = em.GetElementByParentFormId ("aside-ads-container", 1); a.Style = HDK.Element.GetNewStyleStr(a.Style, "display", "none"); }如下图:
3、最后,运行测试,达到预期效果,如下: