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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
对于Python中线程问题的简单讲解
Apr 03 Python
Python单元测试简单示例
Jul 03 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
python3实现名片管理系统
Nov 29 Python
Python OOP类中的几种函数或方法总结
Feb 22 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
python利用faker库批量生成测试数据
Oct 15 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常用函数小技巧
2008/09/11 PHP
php获取post中的json数据的实现方法
2011/06/08 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
创联软件面试题笔试题
2012/10/07 面试题
函授大专自我鉴定
2013/11/01 职场文书
企业项目策划书
2014/01/11 职场文书
运动会入场词60字
2014/02/15 职场文书
中考冲刺决心书
2014/03/11 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
世界文化遗产导游词
2019/08/07 职场文书
java实现web实时消息推送的七种方案
2022/07/23 Java/Android