返回列表 发帖

快眼看书(booksky.org)

  1. #exd#*booksky.org*#<p align="?center"?>[\s\S]*?<\/p>###<!--AD/TW2-->
复制代码
搜书的页面过滤的应该非常干净了,但是看书页面又个 动画 不会过滤。但是基本过滤已经过滤掉了。。呵呵 ~!


   非常感谢 elkay 大大的帮助~!!

[ 本帖最后由 pcxg 于 2007-12-28 19:43 编辑 ]

不知道怎么使用啊

TOP

这样啊,呵呵,我一般都是在黑名单的基础下写规则,所以google的广告已经看不到了,以为你是过滤下面的统计呢。

你到主版发帖吧,应该没有问题了

TOP

我不知道<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>是不是广告我就连它一起过滤了。

TOP

不是啊~!“<script type=[\s\S]*?google[\s\S]*?</script>”是匹配下面的
<script type="text/javascript">
google_ad_client = "pub-7396024520752195";
google_ad_slot = "8100034078";
google_ad_width = 728;
google_ad_height = 90;
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

TOP

回复 15# 的帖子

其实还有小小的问题
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">

这个并不是广告脚本,只是一个统计脚本,一般是不需要过滤的

ps:你的规则中第二条写的有些问题,是匹配不到这个脚本的.
<script type=
你直接就跳过了链接部分,是无法匹配到的

TOP

  1. #exd#*booksky.org*#<iframe[^>]*?height='?(?:112|110|90|60)'?[^>]*?></iframe>###<!--AD/TW2-->
  2. #exd#*booksky.org*#<script type=[\s\S]*?google[\s\S]*?</script>###<!--AD/TW2-->
复制代码


  那么上面的就是完整的过滤规则了??

TOP

回复 13# 的帖子

tw的正则引擎是不区分大小写的,所以不需要考虑这个问题

ps:你测试一下没问题就去主版重新发个帖子吧

[ 本帖最后由 elkay 于 2007-12-29 15:14 编辑 ]

TOP

  1. #exd#*booksky.org*#<iframe[^>]*?height='(?:112|110)'[^>]*?></iframe>###<!--AD/TW2-->
  2. #exd#*booksky.org*#<IFRAME[^>]*?HEIGHT=(?:60|90)[^>]*?></IFRAME>###<!--AD/TW2-->
  3. #exd#*booksky.org*#<script type=[\s\S]*?google[\s\S]*?</script>###<!--AD/TW2-->
复制代码


   现在呢??这样子可以了吗???去大家多多指导。。 (我觉得1、2句可以合成一句就是一个大小写加多了个(‘)多(’)学会了就大小写不会。。)

[ 本帖最后由 pcxg 于 2007-12-29 00:45 编辑 ]

TOP

  1. #exd#*booksky.org*#<p align="center">[\s\S]*?<\/p>###<!--AD/TW2-->
  2. #exd#*booksky.org*#<p align=center>[\s\S]*?<\/p>###<!--AD/TW2-->
复制代码
这两句话其实是存在巨大的误杀风险的(我们的原则是,宁可漏杀不可误杀,宁可少杀不可滥杀),<p>标签是表示文章段落,因此使用<p>标签也会增加过滤所需的时间。所以,我们一般针对<p>标签内的信息进行过滤。

一般的,广告分为iframe广告、JS广告、带有<a>标签的超级链接广告(文本或图片)和包含在<object>标签内的flash广告,所以可以使用<p>标签内的信息进行过滤。
  1. <p align="center"><iframe frameborder=0 src='http://www.booksky.org/qihoo1.htm' width='760' height='112' scrolling=no marginwidth=0 marginheight=0></iframe>
  2. </p>
复制代码
请看,这段HTML代码中,包含在<p>标签内的iframe,一般的我们会针对这个iframe过滤,(很多情况下iframe被用来放广告,除了一些特别情况,如17K.com上的iframe被用来方网站的头部)

所以我们可以写如下的规则:
  1. #exd#*booksky.org*#<iframe[^>]*?qihoo\d[^>]*?><\/iframe>###<!--AdCodeFilterTest-->[001_iframe]<!--TheWorld2-->
复制代码
BTW,上面的replace部分“><!--AdCodeFilterTest-->[001_iframe]<!--TheWorld2-->”其实是我写完规则后测试时的习惯,使用这种办法可以知道过滤是否生效等信息,然后实际使用时去除这段replace。

呵呵,养成好的习惯可以让你在写规则时效率大增。
liuyis[AT]live.com

TOP

晕~
你还是没明白我的意思。

通常情况下<p></p>是表示一个段落,页面中很可能不止一个,如果有其他的选择一般是不建议使用这个来过滤的。

你要过滤的那个网站首页,你要过滤的就是下面的内容
  1. <p align="center"><iframe frameborder=0 src='http://www.booksky.org/qihoo1.htm' width='760' height='112' scrolling=no marginwidth=0 marginheight=0></iframe><br></p>
复制代码

通常的作法是选择过滤这一段
  1. <iframe frameborder=0 src='http://www.booksky.org/qihoo1.htm' width='760' height='112' scrolling=no marginwidth=0 marginheight=0></iframe>
复制代码

这个iframe就是广告部分,而且里面的height='112' 指定了这个部分的高度,看一下这个页面的源文件,这个是唯一的,所以用这个来过滤,其实也可以选择src='http://www.booksky.org/qihoo1.htm'这个来过滤,这些都是不会对其他内容造成影响的

同一个页面的下面也有这么一段广告代码
  1. <iframe frameborder=0 src='http://code.comuce.com/bdcode/275.html?userid=6793' scrolling=no marginwidth=0 marginheight=0 width='760' height='110'></iframe>
复制代码


也就是这个页面中,这2个iframe就是广告,只要过滤掉这2个iframe就可以了
下面的正则表达式就可以匹配到所有的iframe,因为这个网页上只有2个iframe,下面的是可以的
  1. <iframe[^>]*?></iframe>
复制代码

但是如果有2个以上,并且其他的iframe都是正常内容的情况下,这个正则表达式就会有误杀现象。

所以必须要找一些有代表性的并且是唯一的东西来匹配,就像一开始说的,可以用高度,或者是链接的地址来匹配。
加入这里选择高度,那就是下面2条分别匹配到我们要过滤的部分。
  1. <iframe[^>]*?height='112'[^>]*?></iframe>
  2. <iframe[^>]*?height='110'[^>]*?></iframe>
复制代码

如何合并上面的2条呢?还是我前面帖子里说的,找一下他们的区别,这2条区别就在height后面的数值不一样,看一下教程里提供的正则表达式
  1. |
  2. "或"分隔符, 分隔多个表达式, 只须匹配其中一个.
  3. 例: th(is|at|ese|ose) 可以匹配 this, that, these 或 those.
复制代码


只要我们用"|"隔开2个不同的数字,其他部分就可以合并到一起了,你试试看能不能写出最后的规则。
(答案附在下面,一样建议不要看,先自己试试)
<iframe[^>]*?height='(?:112|110)'[^>]*?></iframe>

TOP

呵呵 。搞定。。谢谢指导~!

TOP

返回列表