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调用cmd复制文件代码分享
Dec 27 Python
Python抓取Discuz!用户名脚本代码
Dec 30 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
在pycharm中设置显示行数的方法
Jan 16 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
python实现同一局域网下传输图片
Mar 20 Python
python 3.8.3 安装配置图文教程
May 21 Python
Python爬取12306车次信息代码详解
Aug 12 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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常见的魔术方法详解
2014/12/25 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
Jquery iframe内部出滚动条
2010/02/11 Javascript
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
2011/03/01 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
Python中请不要再用re.compile了
2019/06/30 Python
python递归法实现简易连连看小游戏
2020/03/25 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
个人合作协议书范本
2014/04/18 职场文书
社团活动总结怎么写
2014/06/30 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
付款证明模板
2015/06/19 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers