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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
python在windows下实现备份程序实例
Jul 04 Python
Python HTMLParser模块解析html获取url实例
Apr 08 Python
python实现指定字符串补全空格的方法
Apr 30 Python
Python中的推导式使用详解
Jun 03 Python
python Django批量导入数据
Mar 25 Python
Python数据类型详解(二)列表
May 08 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 Python
python访问hdfs的操作
Jun 06 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 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 中的一些经验积累
2006/10/09 PHP
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
微信小程序 UI与容器组件总结
2017/02/21 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
vue使用keep-alive实现数据缓存不刷新
2017/10/21 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[05:03]显微镜下的DOTA2第十期——Ti3豪之超神幽鬼
2014/06/23 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
实例介绍Python中整型
2019/02/11 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
写自荐信要注意什么
2013/12/26 职场文书
学雷锋演讲稿
2014/03/04 职场文书
酒店保洁员岗位职责
2015/02/26 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
Go gorilla/sessions库安装使用
2022/08/14 Golang
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python