爬虫笔记(八)——例子匹配解析

一、匹配.com或.cn为后缀的url网址

# -*- coding:UTF-8 -*-
import re

string = "<a href='http://www.baidu.com'>百度首页</a>"
pattern = "[a-z|A-Z]+://[^\s]+[.cn|.com]"
result = re.search(pattern, string)
print(result)

#<_sre.SRE_Match object; span=(9, 29), match='http://www.baidu.com'>

提取网址首先观察它的格式,我们可以发现,所有的url它的后缀都以.com或.cn结尾,并且都有" :// "。所以正则表达式最后应该是这个[.com|.cn],在" :// "和[.com|.cn]之间没有空格,所以写[^\s]+或[\S]+,在" :// "前面都是字母,所以写[a-z|A-Z]。

二、匹配电子邮箱

# -*- coding:UTF-8 -*-
import re

string = "<a href='http://www.baidu.com'>百度首页</a><br><a href='mailto:c-e+o@iqi-anyue.com.cn'>电子邮件地址</a>"
pattern = "(\w*[-+])*\w*@\w+([-.]\w+)*"
result = re.search(pattern, string)
print(result)

#<_sre.SRE_Match object; span=(59, 81), match='c-e+o@iqi-anyue.com.cn'>

主要匹配电子邮箱看@,可以发现在@后面跟着一串字母,然后是-或.后再跟着一串字母,在@前面同样是先连着一串字母,再是字母加-或+。

三、匹配电话号码

# -*- coding:UTF-8 -*-
import re

string = "021-67282564515615484544"
pattern = "\d{3}-\d{8}|\d{4}-\d{7}"
result = re.search(pattern, string)
print(result)


#<_sre.SRE_Match object; span=(0, 12), match='021-67282564'>

电话号码的区号有的是三位,有的是四位。如果是三位,那么区号的数字就是八位,如果是四位,那么区号后面的数字就是七位。

 

posted @ 2018-07-18 21:24  龙~白  阅读(193)  评论(0编辑  收藏  举报