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中的赋值运算符
May 13 Python
浅谈Python的Django框架中的缓存控制
Jul 24 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
Nov 16 Python
wxPython窗体拆分布局基础组件
Nov 19 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
jupyter notebook运行命令显示[*](解决办法)
May 18 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
python中K-means算法基础知识点
Jan 25 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
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
PHP安全性漫谈
2012/06/28 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
CCPry JS类库 代码
2009/10/30 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
初中生个人学习的自我评价
2013/12/04 职场文书
婚礼司仪主持词
2014/03/14 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle