3.编译成Pattern对象
对于会多次用到的正则表达式,我们可以调用re的compile()方法编译成
Pattern对象,调用的时候直接Pattern对象.xxx即可,从而提高运行效率。小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!
附:group()方法与其他方法详解不引入括号,增个表达式作为一个组,是group(0)不引入()的话,代表整个表达式作为一个组,group = group(0)如果引入()的话,会把表达式分为多个分组,比如下面的例子:
输出结果:
除了group方法外还有三个常用的方法:
groups(): 从group(1)开始往后的所有的值,返回一个元组
start():返回匹配的开始位置
end():返回匹配的结束位置
span():返回一个元组组,表示匹配位置(开始,结束)
^(0|86|17951)?(13[0-9]|14[579]|15[0-35-9]|17[01678]|18[0-9])[0-9]{8}$
5.第15到17:顺序码,这里就是三个数字,对同年、同月、同日出生的人
编定的顺序号,奇数分给男的,偶数分给女的:
6.第18位:校验码,0到9或者x和X
能推算出18的,那么推算出15的也不难了:
最后用|组合下:
^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(.([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$
匹配开头结尾示例:
输出结果:
卧槽,果然是北京所有的地区,然后每个地区的名字貌似都有一个超链接,F12看下指向哪里?
到这里就豁(huo)然开朗了,我们来捋一捋实现的流程:
1.先拿到第一层的城市列表链接用列表存起来
2.接着遍历列表去访问不同的城市列表链接,截取不同城市的城市名,城市编码存起来
流程看上去很简单,接着来实操一波。先是拿城市列表url
这个很容易拿,就直接贴代码了:
拿到需要的城市列表url:
接着随便点开一个,比如beijing.shtml,页面结构是这样的:想要的内容是这里的超链接:
F12看下页面结构,层次有点多,不过没关系,这样更能够锻炼我们
入手点一般都是离我们想要数据最近地方下手,我看上了:conMidtab3全局搜了一下,也就八个:
第一个直接就可以排除了:
输出下:
继续细扒,我们要的只是a这个东西:
输出下:
输出内容:
卧槽,就是我们想要的结果,美滋滋,接着把之前拿到所有
的城市列表都跑一波,存字典里返回,最后赛到一个大字典
里,然后写入到文件中,完成。
运行结果:
如有侵权请联系小编删除哦!
联系客服