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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
python获取微信小程序手机号并绑定遇到的坑
Nov 19 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
python实现邮件发送功能
Aug 10 Python
Python的垃圾回收机制详解
Aug 28 Python
python urllib爬虫模块使用解析
Sep 05 Python
Python列表操作方法详解
Feb 09 Python
Python全局变量与global关键字常见错误解决方案
Oct 05 Python
Python编程super应用场景及示例解析
Oct 05 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学习笔记之二 php入门知识
2011/01/12 PHP
php生成mysql的数据字典
2016/07/07 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
Vuex提升学习篇
2018/01/11 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
复古服装:RetroStage
2019/05/10 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
看雷锋电影观后感
2015/06/10 职场文书
2015双创工作总结
2015/07/24 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS