python用match()函数爬数据方法详解


Posted in Python onJuly 23, 2019

match()函数的使用。以及从文本中提取数据的方法。在学习re模块的相关函数前应了解正则表达式的特殊字符

准备一个要爬取的文本文档:

直接从某个网页拷贝一份代码,粘贴在 一个txt文件里,以供学习。

方法很简单,比如打开百度视频的热门电影网页,右键点击查看源代码,然后复制,粘贴到一个txt文件里,保存到工作目录下。

有4000多行。

python用match()函数爬数据方法详解

re.match(pattern, string, flags=0)

①pattern,是正则表达式。string,被检验的字符串。

②flags是可选参数,此标记是用来对patten的补充。例如:re.S,可以让正则表达式中的点匹配换行符\n。(如图片中,可以看帮助文档,查看有哪些标记)

③ match()函数由左向右检验string,若匹配到正则表达式,返回一个匹配对象,否则就返回None.

④re.match() 匹配字符串的开始位置,而不匹配每行开始。

----所以才将网页的每行放入列表,以供match函数对每行操作。

python用match()函数爬数据方法详解

比如要在文档中,提取电影的网址,和电影名。

①复制那行文本作为表达式,

②将要提取的网址和和电影名替换为(.*),这只是暂时的,可以在接下来的代码中调整。

python用match()函数爬数据方法详解

读取文本:

①用with open()语句读取;

②用readlines,一次性读完,返回一个列表,元素是文本的每一行。

with open('aa.txt','r',encoding='utf-8') as f:
  lines=f.readlines()

python用match()函数爬数据方法详解

①判断每行是否返回了匹配的对象,

②接收匹配对象,并用groups()提取表达式内括号的内容;

for line in lines:
  if re.match(pat,line):   #判断过滤掉返回None的行,
    ret=re.match(pat,line) #接收匹配对象
    print(ret.groups())

python用match()函数爬数据方法详解

发现有不符合的行,稍加修改,过滤掉不符合的行:

因为,不合的行都有空格(或其他字符)。可以给第二子组的点 . 换成非[^ ];非空格的任意字符,意思就是不要有空格的。

python用match()函数爬数据方法详解

用f-string格式化对输出的文本稍加修饰,使用group(1),group(2);

python用match()函数爬数据方法详解

可以将这段代码封装为一个函数。爬取百度视频的其他栏目。

python用match()函数爬数据方法详解

测试: 百度视频的电影,电视剧,和动漫等栏目,网页上的格式基本相同,所以用上面的函数直接套用。

打开百度视频的动漫,复制源代码,存为bb.txt。

同样可以爬取网址和视频名称。

以上仅是练习match()函数的例子。

python用match()函数爬数据方法详解

以上就是关于python如何用match()函数爬数据的全部内容,感谢大家的阅读和对三水点靠木的支持。

Python 相关文章推荐
用Python编写一个国际象棋AI程序
Nov 28 Python
在Python中使用next()方法操作文件的教程
May 24 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python双向循环链表实现方法分析
Jul 30 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
Python编写打字训练小程序
Sep 26 Python
Python Numpy库常见用法入门教程
Jan 16 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
pandas使用函数批量处理数据(map、apply、applymap)
Nov 27 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 #Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 #Python
python实现DEM数据的阴影生成的方法
Jul 23 #Python
Django REST framework 如何实现内置访问频率控制
Jul 23 #Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 #Python
python视频按帧截取图片工具
Jul 23 #Python
python如何实现从视频中提取每秒图片
Oct 22 #Python
You might like
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
js数组的操作详解
2013/03/27 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
2014/06/09 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
react实现同页面三级跳转路由布局
2019/09/26 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
python实现人像动漫化的示例代码
2020/05/17 Python
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
音乐教学案例
2014/01/30 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
国庆庆典邀请函
2015/02/02 职场文书
CSS完成视差滚动效果
2021/04/27 HTML / CSS