社区编辑申请
注册/登录
盘点一道Python网络爬虫中使用正则表达式匹配字符的题目
开发 前端
本文从实际工作出发,基于Python编程,针对网络爬虫过程中得到的字符串,使用正则表达式和字符串处理函数split(),完成了字符串的处理,满足粉丝的要求。

大家好,我是Python进阶者。

一、前言

大家好,我是Python进阶者。前几天在Python交流群里边有个叫【Arkham】的粉丝问了一个小问题。

一开始还是觉得挺奇怪的,瞅着这个格式十分像是json格式,直接用json提取不香么,但是后来发现就是这么个格式,而且硬是要提取这个里边的文本信息。

二、思路

一般的,针对文本提取,正则表达式是首选,十分是方便快捷。

这里给出了两个方法,感谢【🌑(这是月亮的背面)】和【数据分析新手-瑜亮】两位大佬提供的思路。

三、项目实现

这里给大家安排两种方法,一起来看看吧!文本信息就放这里,大家回头拿到也可以尝试练练手。

Top2 26
Top2 "word":"经纪人不得为假唱假演奏提供条件"
Top2 "query":"经纪人不得为假唱假演奏提供条件"
Top2 "show":[]
Top2 "desc":"18日,文旅部发布关于《演出经纪人员管理办法(征求意见稿)》公开征求意见的公告。征求意见稿指出,演出经纪人员不得为演员假唱、假演奏提供条件。"
Top2 "img":"https://fyb-1.cdn.bcebos.com/fyb-1//5b4bc1de60744e69f34225af1452a395"
Top2 "url":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv_dl=fyb_news"
Top2 "rawUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6"
Top2 "hotScore":"2325661"
Top2 "hotChange":"same"
Top2 "hotTag":"0"
Top2 "appUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv"

1、正则表达式

这个方法十分奏效,代码如下。

# -*- coding: utf-8 -*-
import re
text = """
Top2 26
Top2 "word":"经纪人不得为假唱假演奏提供条件"
Top2 "query":"经纪人不得为假唱假演奏提供条件"
Top2 "show":[]
Top2 "desc":"18日,文旅部发布关于《演出经纪人员管理办法(征求意见稿)》公开征求意见的公告。征求意见稿指出,演出经纪人员不得为演员假唱、假演奏提供条件。"
Top2 "img":"https://fyb-1.cdn.bcebos.com/fyb-1//5b4bc1de60744e69f34225af1452a395"
Top2 "url":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv_dl=fyb_news"
Top2 "rawUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6"
Top2 "hotScore":"2325661"
Top2 "hotChange":"same"
Top2 "hotTag":"0"
Top2 "appUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E40%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv"
"""
regex = re.findall(r'":"(.*?)"', text)
for data in regex:
print(data)

运行之后,可以得到想要的结果,如下图所示。

2、split()

这个方法是来自【🌑(这是月亮的背面)】大佬的思路,后来我自己写了小代码如下。

# -*- coding: utf-8 -*-
import re
text = """
Top2 26
Top2 "word":"经纪人不得为假唱假演奏提供条件"
Top2 "query":"经纪人不得为假唱假演奏提供条件"
Top2 "show":[]
Top2 "desc":"18日,文旅部发布关于《演出经纪人员管理办法(征求意见稿)》公开征求意见的公告。征求意见稿指出,演出经纪人员不得为演员假唱、假演奏提供条件。"
Top2 "img":"https://fyb-1.cdn.bcebos.com/fyb-1//5b4bc1de60744e69f34225af1452a395"
Top2 "url":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv_dl=fyb_news"
Top2 "rawUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E4%B8%8D%E5%BE%97%E4%B8%BA%E5%81%87%E5%94%B1%E5%81%87%E6%BC%94%E5%A5%8F%E6%8F%90%E4%BE%9B%E6%9D%A1%E4%BB%B6"
Top2 "hotScore":"2325661"
Top2 "hotChange":"same"
Top2 "hotTag":"0"
Top2 "appUrl":"https://www.baidu.com/s?wd=%E7%BB%8F%E7%BA%AA%E4%BA%BA%E40%E4%BE%9B%E6%9D%A1%E4%BB%B6&rsv"
"""
raw_text = text.strip('\n').split('Top2 ')
for text in raw_text:
print(text.split('":"')[-1].replace('"', ''))

处理起来还是相对费劲的,而且不那么智能,针对文本定制的,比较“死板”,虽然勉强可以实现,可是还是不太建议。

四、总结

本文从实际工作出发,基于Python编程,针对网络爬虫过程中得到的字符串,使用正则表达式和字符串处理函数split(),完成了字符串的处理,满足粉丝的要求。

责任编辑:姜华 来源: Python爬虫与数据挖掘
相关推荐

2022-06-12 06:48:34

2022-06-05 21:09:47

Python办公自动化

2022-06-27 17:46:53

PythonFlask

2022-06-24 10:16:59

Python精选库

2022-06-21 09:02:49

python技巧

2022-06-15 08:25:07

Python天气数据可视化分析

2022-06-27 19:01:04

Python应用程序数据

2022-06-17 18:49:25

pythonexcel

2022-05-11 08:23:54

自动化测试软件测试

2022-06-22 09:56:19

PythonMySQL数据库

2022-06-28 09:26:25

Python配置文件

2022-06-28 12:35:21

DockerPython

2022-06-28 09:34:24

可视化Python代码

2022-06-17 09:47:04

Linux命令

2022-06-16 07:32:38

VSCodePython插件

2022-05-25 07:11:13

2022-06-17 09:08:27

代码Python内置库

2022-05-11 09:02:27

Python数据库Excel

2022-06-28 13:41:07

浏览网页互联网交互Python

2022-05-17 16:56:33

开发工具前端

同话题下的热门内容

手把手教你用装饰器扩展 Python 计时器IOC-Golang 的 AOP 原理与应用Vue 里,多级菜单要如何设计才显得专业?分析了 700 万份工作需求,市场需求最高的八种编程语言是这些Vue 2.7 正式发布,代号为 Naruto手把手教你实现一个 Python 计时器2022 年编程语言趋势:Swift、Kotlin 热度持续增长,收入最高的五种语言竟是它们分布式事务(Seata) 四大模式详解

编辑推荐

太厉害了,终于有人能把TCP/IP协议讲的明明白白了!牛人5次面试腾讯不成功的经验HBase原理–所有Region切分的细节都在这里了Javascript如何监听页面刷新和关闭事件如何搭建一个HTTPS服务端
我收藏的内容
点赞
收藏

51CTO技术栈公众号