在学习完python的基础语法和python的网络编程后,就正式开始了有关爬虫内容的学习了。
首先是正则匹配。正则表达式:匹配字符串,如果匹配上了,得到正则结果。1.在正则表达式中如果直接给出字符,就是精确匹配。2.用\d可以匹配一个数字,\w可以匹配一个数字或字母。3.'.'可以匹配任意字符。4.用*表示任意个字符(包括0个)。用+表示至少一个字符。用?表示0或1个字符。用{n}表示n个字符。用{n,m}表示n-m个字符。5.要做更准确的匹配,可以使用[]表示范围,比如: [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线。 [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','py3000'等等。 [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量。 [a-zA-Z\_][0-9a-zA-Z\_]{0,19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。正则表达式可混合使用:A|B可以匹配A或B,所以(P|p)ython可以匹配‘Python’和‘python’。
^表示行的开头,^\d表示必须以数字开头。$表示行的结束,\d$表示必须以数字结束。py也可以匹配'python',但是加上py$就只能匹配py\D:非数字,^\d\W:非单词字符,^\w\S:非空白字符,^\sre模块: 1.使用compile()函数将正则表达式的字符串形式编译为一个Pattern对象。2.通过Pattern对象*的方法对文本进行匹配查找,获得匹配结果,一个Match对象。3.最后使用Match对象*的属性和方法获得信息,根据需要进行其他的操作。
Pattern对象的常用方法:1.match方法:从起始位置开始查找,一次匹配。2.search方法:从任何位置开始查找,一次匹配。3.findall方法:全部匹配,返回列表。4.split方法:分割字符串,返回列表。5.sub方法:替换。贪婪模式与非贪婪模式:abbbc使贪婪的数量词的正则表达式ab*,匹配结果:abbb*决定了尽可能多匹配b,所以a后面所有的b都出现了。使用非贪婪的数量词的正则表达式ab*?,匹配结果:a。即使前面有*,但?决定了尽可能少匹配b,所以没有b。
本次的项目为通过输入经典名著的拼音,下载古诗词名句网爬取这本名著的名著名、目录以及各章节内容,并保存为txt文件。