爬虫笔记(八)——例子匹配解析
一、匹配.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'>
电话号码的区号有的是三位,有的是四位。如果是三位,那么区号的数字就是八位,如果是四位,那么区号后面的数字就是七位。