标题:
快眼看书(booksky.org)
[打印本页]
作者:
pcxg
时间:
2007-12-28 00:06
标题:
快眼看书(booksky.org)
#exd#*booksky.org*#<p align="?center"?>[\s\S]*?<\/p>###<!--AD/TW2-->
复制代码
搜书的页面过滤的应该非常干净了,但是看书页面又个 动画 不会过滤。但是基本过滤已经过滤掉了。。呵呵 ~!
非常感谢 elkay 大大的帮助~!!
[
本帖最后由 pcxg 于 2007-12-28 19:43 编辑
]
作者:
pcxg
时间:
2007-12-28 00:07
自己顶一下~!
作者:
elkay
时间:
2007-12-28 15:25
还是那个问题。你在选择过滤部分的时候尽量不要用这种没有唯一性的标识,我看了下这个网站,你要过滤的部分其实是这个
<iframe frameborder=0 src='http://www.booksky.org/qihoo1.htm' width='760' height='112' scrolling=no marginwidth=0 marginheight=0></iframe>
另外还有一点,假如必须选择</table>这种标识的话为了代码的严谨,过滤完之后也一定要补上的,不然页面可能会出问题
作者:
elkay
时间:
2007-12-28 17:42
我先移到这里,等你改好了再移动到主版
作者:
pcxg
时间:
2007-12-28 17:42
</table> 怎么补啊??下载就是补知道怎么补啊?还有论坛上面的教程相对简单了点啊~!没有一个可以完全的教程供大家学习。。
作者:
elkay
时间:
2007-12-28 17:45
可以在替换串里加上你先前过滤掉的需要补上的内容。
教程只能是这样啊,只是一个参考,大多数还是要自己试的
其实只要多试几次,慢慢的就有经验了
作者:
pcxg
时间:
2007-12-28 18:49
有一句是这样的:<p align="center"> 但是有时候又是<p align=center>那我怎么去些啊~!
作者:
pcxg
时间:
2007-12-28 19:03
也就是把:
#exd#*booksky.org*#<p align="center">[\s\S]*?<\/p>###<!--AD/TW2-->
#exd#*booksky.org*#<p align=center>[\s\S]*?<\/p>###<!--AD/TW2-->
这2句合成一句???
作者:
elkay
时间:
2007-12-28 19:27
ok,你看这2个有什么区别?
<p align="center">
<p align=center>
实际上就是一个有"号,一个没有对吗?
再看一下正则表达式里?号的作用
? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。
明白应该如何了么?
(答案在下面,全选文字就能看到,建议你先不要看,自己先试试看)
只需要在"后面加上?就会变成同时匹配有"号或者没有"号的情况
即:<p align="?center"?>
[
本帖最后由 elkay 于 2007-12-28 19:30 编辑
]
作者:
pcxg
时间:
2007-12-28 19:40
呵呵 。搞定。。谢谢指导~!
作者:
elkay
时间:
2007-12-28 20:14
晕~
你还是没明白我的意思。
通常情况下<p></p>是表示一个段落,页面中很可能不止一个,如果有其他的选择一般是不建议使用这个来过滤的。
你要过滤的那个网站首页,你要过滤的就是下面的内容
<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>
复制代码
通常的作法是选择过滤这一段
<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'这个来过滤,这些都是不会对其他内容造成影响的
同一个页面的下面也有这么一段广告代码
<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,下面的是可以的
<iframe[^>]*?></iframe>
复制代码
但是如果有2个以上,并且其他的iframe都是正常内容的情况下,这个正则表达式就会有误杀现象。
所以必须要找一些有代表性的并且是唯一的东西来匹配,就像一开始说的,可以用高度,或者是链接的地址来匹配。
加入这里选择高度,那就是下面2条分别匹配到我们要过滤的部分。
<iframe[^>]*?height='112'[^>]*?></iframe>
<iframe[^>]*?height='110'[^>]*?></iframe>
复制代码
如何合并上面的2条呢?还是我前面帖子里说的,找一下他们的区别,这2条区别就在height后面的数值不一样,看一下教程里提供的正则表达式
|
"或"分隔符, 分隔多个表达式, 只须匹配其中一个.
例: th(is|at|ese|ose) 可以匹配 this, that, these 或 those.
复制代码
只要我们用"|"隔开2个不同的数字,其他部分就可以合并到一起了,你试试看能不能写出最后的规则。
(答案附在下面,一样建议不要看,先自己试试)
<iframe[^>]*?height='(?:112|110)'[^>]*?></iframe>
作者:
285900537
时间:
2007-12-28 20:51
#exd#*booksky.org*#<p align="center">[\s\S]*?<\/p>###<!--AD/TW2-->
#exd#*booksky.org*#<p align=center>[\s\S]*?<\/p>###<!--AD/TW2-->
复制代码
这两句话其实是存在巨大的误杀风险的(我们的原则是,宁可漏杀不可误杀,宁可少杀不可滥杀),<p>标签是表示文章段落,因此使用<p>标签也会增加过滤所需的时间。所以,我们一般针对<p>标签内的信息进行过滤。
一般的,广告分为iframe广告、JS广告、带有<a>标签的超级链接广告(文本或图片)和包含在<object>标签内的flash广告,所以可以使用<p>标签内的信息进行过滤。
<p align="center"><iframe frameborder=0 src='http://www.booksky.org/qihoo1.htm' width='760' height='112' scrolling=no marginwidth=0 marginheight=0></iframe>
</p>
复制代码
请看,这段HTML代码中,包含在<p>标签内的iframe,一般的我们会针对这个iframe过滤,(很多情况下iframe被用来放广告,除了一些特别情况,如17K.com上的iframe被用来方网站的头部)
所以我们可以写如下的规则:
#exd#*booksky.org*#<iframe[^>]*?qihoo\d[^>]*?><\/iframe>###<!--AdCodeFilterTest-->[001_iframe]<!--TheWorld2-->
复制代码
BTW,上面的replace部分“><!--AdCodeFilterTest-->[001_iframe]<!--TheWorld2-->”其实是我写完规则后测试时的习惯,使用这种办法可以知道过滤是否生效等信息,然后实际使用时去除这段replace。
呵呵,养成好的习惯可以让你在写规则时效率大增。
作者:
pcxg
时间:
2007-12-29 00:42
#exd#*booksky.org*#<iframe[^>]*?height='(?:112|110)'[^>]*?></iframe>###<!--AD/TW2-->
#exd#*booksky.org*#<IFRAME[^>]*?HEIGHT=(?:60|90)[^>]*?></IFRAME>###<!--AD/TW2-->
#exd#*booksky.org*#<script type=[\s\S]*?google[\s\S]*?</script>###<!--AD/TW2-->
复制代码
现在呢??这样子可以了吗???去大家多多指导。。 (我觉得1、2句可以合成一句就是一个大小写加多了个(‘)多(’)学会了就大小写不会。。)
[
本帖最后由 pcxg 于 2007-12-29 00:45 编辑
]
作者:
elkay
时间:
2007-12-29 15:10
标题:
回复 13# 的帖子
tw的正则引擎是不区分大小写的,所以不需要考虑这个问题
ps:你测试一下没问题就去主版重新发个帖子吧
[
本帖最后由 elkay 于 2007-12-29 15:14 编辑
]
作者:
pcxg
时间:
2007-12-29 15:18
#exd#*booksky.org*#<iframe[^>]*?height='?(?:112|110|90|60)'?[^>]*?></iframe>###<!--AD/TW2-->
#exd#*booksky.org*#<script type=[\s\S]*?google[\s\S]*?</script>###<!--AD/TW2-->
复制代码
那么上面的就是完整的过滤规则了??
作者:
elkay
时间:
2007-12-29 15:40
标题:
回复 15# 的帖子
其实还有小小的问题
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
这个并不是广告脚本,只是一个统计脚本,一般是不需要过滤的
ps:你的规则中第二条写的有些问题,是匹配不到这个脚本的.
<script type=
你直接就跳过了链接部分,是无法匹配到的
作者:
pcxg
时间:
2007-12-29 16:13
不是啊~!“<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>
作者:
pcxg
时间:
2007-12-29 16:14
我不知道<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>是不是广告我就连它一起过滤了。
作者:
elkay
时间:
2007-12-29 16:24
这样啊,呵呵,我一般都是在黑名单的基础下写规则,所以google的广告已经看不到了,以为你是过滤下面的统计呢。
你到主版发帖吧,应该没有问题了
作者:
牧木
时间:
2010-7-30 20:15
不知道怎么使用啊
欢迎光临 世界之窗论坛 (http://bbs.theworld.cn/)
Powered by Discuz! 7.2