python中match⽅法_python⽤match()函数爬数据⽅法详解match()函数的使⽤。以及从⽂本中提取数据的⽅法。在学习re模块的相关函数前应了解正则表达式的特殊字符
准备⼀个要爬取的⽂本⽂档:
直接从某个⽹页拷贝⼀份代码,粘贴在 ⼀个txt⽂件⾥,以供学习。
⽅法很简单,⽐如打开百度视频的热门电影⽹页,右键点击查看源代码,然后复制,粘贴到⼀个txt⽂件⾥,保存到⼯作⽬录下。
有4000多⾏。
re.match(pattern, string, flags=0)
①pattern,是正则表达式。string,被检验的字符串。
②flags是可选参数,此标记是⽤来对patten的补充。例如:re.S,可以让正则表达式中的点匹配换⾏符\n。(如图⽚中,可以看帮助⽂档,查看有哪些标记)
③ match()函数由左向右检验string,若匹配到正则表达式,返回⼀个匹配对象,否则就返回None.
④re.match() 匹配字符串的开始位置,⽽不匹配每⾏开始。
----所以才将⽹页的每⾏放⼊列表,以供match函数对每⾏操作。
⽐如要在⽂档中,提取电影的⽹址,和电影名。
①复制那⾏⽂本作为表达式,
②将要提取的⽹址和和电影名替换为(.*),这只是暂时的,可以在接下来的代码中调整。
读取⽂本:
①⽤with open()语句读取;
②⽤readlines,⼀次性读完,返回⼀个列表,元素是⽂本的每⼀⾏。
with open('aa.txt','r',encoding='utf-8') as f:
adlines()
①判断每⾏是否返回了匹配的对象,
②接收匹配对象,并⽤groups()提取表达式内括号的内容;
for line in lines:
if re.match(pat,line): #判断过滤掉返回None的⾏,
ret=re.match(pat,line) #接收匹配对象
ups())
发现有不符合的⾏,稍加修改,过滤掉不符合的⾏:
因为,不合的⾏都有空格(或其他字符)。可以给第⼆⼦组的点 . 换成⾮[^ ];⾮空格的任意字符,意思就是不要有空格的。
⽤f-string格式化对输出的⽂本稍加修饰,使⽤group(1),group(2);
可以将这段代码封装为⼀个函数。爬取百度视频的其他栏⽬。
测试: 百度视频的电影,电视剧,和动漫等栏⽬,⽹页上的格式基本相同,所以⽤上⾯的函数直接套⽤。打开百度视频的动漫,复制源代码,存为bb.txt。
同样可以爬取⽹址和视频名称。
以上仅是练习match()函数的例⼦。
以上就是关于python如何⽤match()函数爬数据的全部内容,感谢⼤家的阅读和对我们的⽀持。
本⽂标题: python⽤match()函数爬数据⽅法详解源代码电影讲解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论