网页标签清洗
希望大佬能指点一二,小弟不胜感激
关于网页标签的清洗,在计算网页相似度的时候,哪些标签是可以过滤的,在这段代码生成的结果中
class Structure(HTMLParser):
'''
pass
'''
def extract(self, html):
self.tmp = []
tag = ['script','style']
result = []
self.tagstack = []
self.feed(html)
for a in self.tmp:
if a.split('/')[-1] not in tag:
result.append(a)
return result
def handle_starttag(self, tag, attrs):
self.tagstack.append(tag)
def handle_endtag(self, tag):
self.tagstack.pop()
def handle_data(self, data):
t = ''
if data.strip():
for tag in self.tagstack:
t = t + '/' + tag
self.tmp.append(t)
用这个网页生成的结果举例,过滤/span/p结尾的标签,如果是其他的网页是不是也可以这么过滤,如果不是的话该怎么过滤,是不是还得考虑标签属性?
补充:计算的是网页结构相似度,不考虑正文相似度
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设你已经可以获得了网页标签结构,这里所说的标签结构指的是这样的情况
原网页A:
替换后B:
当然,如果你可以的话也可以忽略标签属性。比如C这样:
假设网页D:
基于以上的假设,来探讨问题,我想你需要的是有两个B类型或者C的文本,进行相似度判断。那么,我推荐你用simhash或者余弦相似性来做。
simhash,嗯广泛用于论文查重和网络爬虫里面。而余弦相似性在NLP里面属于较为容易入门的算法。
使用余弦相似性的算法,应该先考虑停止词。对于C类型的标签来说,可以忽略的我想不应该是script这种标签。而是html,head,title,body,mate这种大多数网页都会有的标签。这对于判断没有任何作用。
接下来统计一下其他标签的数目:
根据这一组数据绘制向量:
然后根据公式,算答案保留四位小数:0.7895
至于度量值如何需要有你自己来定~但是真的建议你使用simhash来做。
事件仓促= =有时间再来改排版填坑~