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遍历C盘dll文件的方法
May 06 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
python上selenium的弹框操作实现
Jul 13 Python
教你怎么用Python生成九宫格照片
May 20 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 mysql事务问题实例分析
2016/01/18 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
ScrollDown的基本操作示例
2013/06/09 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
jquery自定义表单验证插件
2016/10/12 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python提取页面内url列表的方法
2015/05/25 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
python自动化报告的输出用例详解
2018/05/30 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python的logging模块基本用法
2020/12/24 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
大学生素质拓展活动方案
2014/02/11 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
未婚证明范本
2015/06/15 职场文书
解决golang post文件时Content-Type出现的问题
2021/05/02 Golang
Python办公自动化之Excel(中)
2021/05/24 Python