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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
python处理文本文件实现生成指定格式文件的方法
Jul 31 Python
跟老齐学Python之有容乃大的list(4)
Sep 28 Python
python通过索引遍历列表的方法
May 04 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
python实现Zabbix-API监控
Sep 17 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
Python语言异常处理测试过程解析
Jan 08 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
Apr 03 Python
keras多显卡训练方式
Jun 10 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实现的简易版图片相似度比较
2015/01/07 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JS中的form.submit()不能提交表单的错误原因
2014/10/08 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
python处理csv数据的方法
2015/03/11 Python
python实现验证码识别功能
2018/06/07 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
django跳转页面传参的实现
2020/09/17 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
linux下进程间通信的方式
2014/12/23 面试题
元旦晚会邀请函
2014/02/01 职场文书
寄语学生的话
2014/04/10 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
社团活动总结报告
2014/06/27 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
2015年共青团工作总结
2015/05/15 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书