正则表达式是一种小型的,高度专业化的编程语言,在很多语言(javascript,Python等)中都有,在Python中通过re模块实现,是一种强有力的匹配字符串神器。
个人的学习正则表达式分成三步:
<1>初始正则表达式,了解元字符,以及熟练掌握经常使用的元字符;
<2>掌握正则表达式的编译规则,熟练使用正则表达式匹配字符串;
<3>使用正则表达式完成Python小爬虫。
首先,先注释一下常用的元字符(元字符本身在字符集中不起作用):
[ ]:用来指定一个字符集,比如[abc],[a-z],[0-9]等;
^ :匹配行首;
$ :匹配行尾;
\d:匹配一个数字; \w:匹配一个字母或数字; \w:匹配一个空格;
*:任意个字符(包括0);
+ :至少1个字符;
?:0个或1个字符;
{n} :n个字符; {n,m}:n-m个字符。
常用的元字符就是这些,下面举个例子:
\d{3}\s\-\s\d{8}可以与010 - 12345678相匹配。
其次,正则表达式的编译规则,正则表达式默认采用的是贪婪匹配,也就是匹配尽可能多的字符。Python中使用re模块进行正则表达式的编译。在re模块中
需学会使用一些编译标志,比如re.S(匹配包括换行在内的所有字符),re.I(无视大小写),re.M(匹配多行)等。这里还有一个注意点就是分组,用()表
示分组,举个例子:
可以看出分组的作用了,分组不仅可以将某一集合看成一个整体,也可以直接提取出自己想要的部分,这在一些爬虫中使用会很方便。
最后,使用正则表达式来进行一个简单的爬虫案例。
这里选用百度百科的首页进行png格式的图片下载:
当然也可以通过Python先查看该网页的源代码,结果如下图:
这里可以找到png格式的图片链接,格式均为src=”http******.png“,所以我们便可以将正则表达式写成如上源程序代码,结果如下:
可以看到,图片已经下载到指定的目录中了,这样一个利用正则表达式的小爬虫案例便完成了。