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/C++交互的几种方法总结
May 11 Python
详解python之配置日志的几种方式
May 22 Python
python实现的二叉树定义与遍历算法实例
Jun 30 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
python实现反转部分单向链表
Sep 27 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
Python编程中类与类的关系详解
Aug 08 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 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 存储文本换行实现方法
2010/01/05 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
毕业自荐信
2013/12/16 职场文书
预防传染病方案
2014/06/14 职场文书
新文化运动的基本口号
2014/06/21 职场文书
助学贷款贫困证明
2014/09/23 职场文书
个人借条范本
2015/05/25 职场文书
辅导员学期工作总结
2015/08/14 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL