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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
Django 删除upload_to文件的步骤
Mar 30 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
Python实现仿射密码的思路详解
Apr 23 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
Python脚本调试工具安装过程
Jan 11 Python
Python Selenium异常处理的实例分析
Feb 28 Python
python基础之文件处理知识总结
May 23 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
PHP 读取Postgresql中的数组
2013/04/14 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
JS实现登录页密码的显示和隐藏功能
2017/12/06 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python实现logistic分类算法代码
2020/02/28 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
详解python中的lambda与sorted函数
2020/09/04 Python
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
保研推荐信格式
2015/03/25 职场文书
项目合作意向书
2015/05/08 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python