免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1504 | 回复: 4
打印 上一主题 下一主题

求匹配不带nofollow链接的正则 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-20 21:39 |只看该作者 |倒序浏览
是这样的,需要匹配出不带rel="nofollow"的链接,因为一带nofollow链接就没意思了。下面是例子:
<a href="www.baidu.com">
<a rel="nofollow" href="www.baidu.com">
<a href="www.baidu.com" rel="nofollow">
我想通过正则过滤掉第2,3种,只保留不带rel="nofollow"的第一种。我在网上搜了下是用?!,但这个确实不会写。
求高手帮忙,现在这里谢过了!

论坛徽章:
0
2 [报告]
发表于 2013-05-20 23:14 |只看该作者
回复 1# alexkh
  1. #-*- coding:utf-8 -*-

  2. import re
  3. def filter_nofollow(urls):
  4.     pattern = re.compile('.*rel="nofollow".*')
  5.     follow = lambda x: not pattern.match(x)
  6.     return filter(follow, urls)

  7. if __name__ == "__main__":
  8.     urls = [ \
  9.     '<a href="www.baidu.com">',
  10.     '<a rel="nofollow" href="www.baidu.com">',
  11.     '<a href="www.baidu.com" rel="nofollow">']
  12.    
  13.     print filter_nofollow(urls)

复制代码

论坛徽章:
0
3 [报告]
发表于 2013-05-21 16:46 |只看该作者
回复 2# GhostFromHeaven


    先谢谢了。不知道能不能实现一个正则就将那个链接过滤出来的。因为我想查询一批网页,看这些网页中是否有不带nofollow的某网站链接。

论坛徽章:
0
4 [报告]
发表于 2013-05-22 11:29 |只看该作者
针对你这个例子的:
  1. import re

  2. a = '''<a rel="nofollow" href="www.baidu.com"><a href="www.baidu.com"><a href="www.baidu.com" rel="nofollow">'''

  3. print re.search('''<a\s(?!rel="nofollow").*?(?<!rel="nofollow")>''', a).group()
复制代码

论坛徽章:
0
5 [报告]
发表于 2013-05-22 21:13 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP