天涯在线是我国最大的论坛社区,无论论坛的在线人数、帖子质量数量,其他论坛都难以望其项背。
以天涯旅游版为例,一个质量稍微好一点的帖子,其长度约有10余页,2000多个楼主发帖和其他用户的回复。很多时候,回复的内容中很多是垃圾留言,甚至是无关的广告帖子。
这里开发一个网页过滤器对天涯帖子进行过滤,处理后的帖子只剩下楼主的跟帖。
主要使用python的正则表达式来实现网页元素的识别、替换和删除。
结果在这里演示:
测试例子:
python cgi地址: (google的apps engine)
演示URL
过滤的原理为,让对进行访问,分析其html源码输出,将非楼主部分的回帖剔除掉。同时,帖子上如果有分页,则对分页按钮的目标href进行替换;如果帖子上有表单form,则分析表单字段,改变表单的target为 脚本。
处理的主要过程为:
1.识别楼主:
帖子代码片段:
<!-- 天涯百宝箱 -->
<script>
var chrType = "public";
var intAuthorId = "";
var chrAuthorName = "GreyHouse";
var chrTitle = "[光影记录]跳蚤的欧洲之行";
var chrItem = 'travel';
var intItem = '0';
var intArticleId = "191157";
var tAuthor = 'GreyHouse';
script>
使用以下的正则表达式来找到楼主
:
reg_louzhu = re.compile('.*chrAuthorName = "(.*?)"; '
设mat为reg_louzhu.match(网页源码html行);
则mat.groups()[0] 为楼主名字 GreyHouse
2. 识别一个帖子的起始位置
继续分析html,发现天涯回帖一般都是用作者信息栏作为帖子的起始,那么帖子的尾部就是下一个作者信息栏之前咯。
<TABLE cellspacing=0 border=0 bgcolor=f5f9fa width=100% ><TR><TD WIDTH=100 ALIGN=RIGHT VALIGN=bottom>TD><TD><font size=-1 color=green><br><center>作者:<a href="/browse/Listwriter.asp?vid=11288815&vwriter=开着坦克逛街&idwriter=0&key=0" target=_blank>开着坦克逛街a> 回复日期:2009-1-8 14:32:38font> center>TD><TD WIDTH=100 ALIGN=RIGHT VALIGN=bottom> TD>TR>table>
使用如下表达式来识别作者信息栏和作者的位置:
pat_vwriter=re.compile(r".*
同理,match对象的grous()[0] 是回复作者。
如果发现匹配,就可以得到回帖作者的名字以及回帖的起始位置。
后续的处理为:
如果回帖作者是楼主,那么连续输出其回帖内容
如果回帖作者非楼主,删除其回帖内容
3. 实现分页按钮href替换
帖子上有分页功能的按钮,如果不处理,那么点击分页后又会跳回原天涯页面上。所以,这里要做到识别分页href连接,然后替换这个连接。
分页功能按钮的href相关源码如下:
<a href=><font color=#246cae>下一页a>
使用
filtered_html = pnext.sub(r"<a href=\1><font color=#246cae>下一页font>a>",filtered_html)
其中\1表示正则表达是匹配后,匹配结果中的组1,既是
上述替换的结果为,把 原来
<a href=><font color=#246cae>下一页a>
换成了
<a href=><font color=#246cae>下一页a>
这样就实现的连接的重新替换。
4 form对象的替换。
和连接href对象的替换类似,也是使用睁着表达式来识别 这样的元素,然后把部分表单元素或者整个表单替换掉,从而实现自己的目的。
有兴趣的读者可以进行选择一个html页面,用正则表达式进行过滤,实现自己喜欢的功能。
一般功能有:
网络钓鱼:
1. 选取一个银行网站,分析其关键部分(登陆)部分的Form。
2. 用自己网站上的脚本进行处理,将其Form部分重定向到自己网站上。
3. 申请和银行类似的域名,伪装链接并将链接发送给水鱼。
这样做效果比建立一个钓鱼网站所花的功夫可能要少,而且还会随着目标网站的更新而更新(因为都是从目标直接拉取页面)。缺点是url可能比较长,容易引起怀疑。
广告去除:
分析广告特征html代码,将广告部分去掉。
Google appengine 支持用户申请500M的网页空间,允许在上面运行python脚本,并提供相应的URL、数据存储、图片处理的API。方便学习者在上面创建各种有意思的应用。如感兴趣请访问 ,申请方便,只要你拥有一台联通号码的手机用于接收验证短信即可。
随后附上我google apps上的天涯html过滤脚本。
阅读(1009) | 评论(0) | 转发(0) |