python学习——正则表达项目
主要实现功能
从网页爬取关键信息,展示在自己写的界面上。
从http://www.5ppt.net/aricle.asp?id=3947&p=1,获取各个国家的疫情信息。
实现思路
- 使用request库,调用request.get(),爬取网页内容
- 使用re库,使用正则表达式,在网页内容中各个国家的疫情人数,存在一个列表中。
- 使用PyQt5库,构建一个包含进度条,按钮,标签的界面,展示获得的数据。
实现步骤
一、构造函数
构建界面,所以定义一个类,在构造函数中,声明需要调用的函数和属性。
界面需要多个进度条和标签,所以得列表形式
需要爬取网页信息的方法
需要生成界面的方法
网页信息存储在self中,所以在声明一个存网页信息的列表
写程序经验:需要多次传递的写在self中,最好事先在构造函数中声明。
class Example(QWidget):def __init__(self):super(Example, self).__init__()self.pbar = [] #界面进度条self.lab = [] #界面标签self.infos = [] #爬取信息self.epidemic() #执行爬虫任务self.initUI() #执行生成界面
二、爬虫函数
从网页中爬取信息,这种信息一定是有特点的信息,比如这个网页中各个国家新冠人数的信息
在网页上显示是:
右击打开网页源码,显示是:
可以看到关键信息都有固定模式,汉字+冒号+数字+例,只要符合这个类型的,都匹配出来,存在self.infos中。
用两个()分别括住国家信息和人数信息,在正则结果中用列表的下标可以快速得到想要的信息。
注意要点:
- 这个网页一共有5页,通过网址最后的‘3947&p=几’来分开,比如‘3947&p=2’打开就是第二页,所以需要匹配五次,分别对5个不同的网址。
- 需要改变网页的编码方式,通常为‘UTF-8’,也可以写成r.encoding = r.apparent_encoding,汉字不会变为乱码。
- 匹配结果是列表,包含两个元素的列表,需要把他添加到self.infos中。
def epidemic(self):url = "http://www.5ppt.net/aricle.asp?id=3947&p="for i in range(1,5):url_new = url+str(i)r = requests.get(url_new)if r.status_code == 200:r.encoding = r.apparent_encoding#改变编码方式result = re.findall('([\u4e00-\u9fa5]+):(\d+)例',r.text)#‘[\u4e00-\u9fa5]’匹配中文的意思#正则表达加()分组,变为列表,便于后续处理if result != []:for one_info in result:self.infos.append(one_info)print(self.infos)
界面函数
for循环得到进度条列表和标签列表,相对简单
注意要点:
- 把进度条和标签对象,一个一个添加到对应的列表中
- 单独创建一个按钮对象,并且需要间接点击触发的事件。
- 各个控件的位置需要调试放在合适的位置。
def initUI(self):for i in range(len(self.infos)):self.pbar.append(QProgressBar(self))self.lab.append(QLabel(self))self.pbar[i].setGeometry(120,80+30*i,200,25)self.lab[i].setGeometry(50,80+30*i,60,30)self.lab[i].setText(str(i))self.pbar[i].setValue(0)self.btn = QPushButton('显示数据',self)self.btn.move(120,20)self.btn.clicked.connect(self.doAction)self.setGeometry(600,100,380,800)self.setWindowTitle('进度条')self.show()
项目入口
注意判断if name == ‘main’:,再开始执行主函数。
if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec())
python学习——正则表达项目相关推荐
- Python 之正则表达re.compile()与re.findall()详解
在使用爬虫提取网页中的部分信息时,采用到了re.compile()与re.findall()两种方法,目的:把网页中的"某某城市土地规划表"截取并打印出来. 网页中的代码: < ...
- Python 学习 正则re解析详解
一.学习正则的目的 应用场景举例: ① 提取xml文件里的信息 有些xml文件应用编辑器的一些读取库可能无法实现效果,但是用正则的话基本上能解决绝大多数参数匹配问题.如以下提取头条等app的user_ ...
- python中正则表达以及多线程,建立服务器端
多重继承 我们先来看一下代码: class Father(object):def __init__(self, name):self._name = namedef drink(self):print ...
- Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段
大家好,我是梦雅. \ 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. \ \ \ 阶段一:Python基础[ 初入江湖] \ Li ...
- 小猪的Python学习之旅 —— 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中
小猪的Python学习之旅 -- 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中 标签:Python 一句话概括本文: 利用Excel存储爬到的抓取豆瓣音乐Top 250数据信息,还有 ...
- 最新Python学习项目Top10!
作者 | Mybridge 译者 | Linstancy 整理 | Jane 出品 | AI科技大本营 [导读]过去一个月里,我们对近1000个Python 学习项目进行了排名,并挑选出热度前10的项 ...
- 如何用 Python 进行基于深度学习的计算机视觉项目开发?
令人惊喜的"智能"年代 深度学习有着广阔的前景 我们正处在一个"智能"的年代,比如智能手机中的语音助手.机器翻译和人脸识别:战胜过日本将棋冠军.国际象棋冠军, ...
- python从零基础到项目实战怎么样-2018完整Python零基础到项目精通的学习书籍
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏.Python编程语言的流行直线上升,如何学习好Py ...
- python语言基础项目报告书_25个Python学习项目,值得推荐
译者 | 弯月,责编 | 杨碧玉 出品 | CSDN(ID:CSDNnews) 根据2020年StackOverflow开发者调查报告,Python是世界上最受欢迎的语言之一,排名仅次于Rust和Ty ...
最新文章
- 灵光一现的trick
- English trip M1 - AC6 How to make salad? Teacher:Patrick
- U-boot mkimage指定Linux内核地址时的两种方式
- c++之五谷杂粮---2
- JSON在PHP中的基本应用
- leetcode-125-Valid Palindrome
- 实例58:python
- ssh远程执行命令 linux,【Linux】SSH 远程执行命令
- 大公司和小公司的比较
- Gamma 矫正用于平衡光照不均匀
- uid_t gid_t等的定义
- 72+常用Axure交互原型免费下载
- 人工智能、机器学习、深度学习、神经网络的区别
- 基于Angularjs框架实现HTML5在线查看OFD文件
- 记录几个程序员接单搞副业的网站
- MATLAB | 那些你不得不知道的MATLAB小技巧(一)
- cuda安装linux命令,ubuntu下安装cuda的两种方法
- python重量转换程序_重量转换的极小项目说python查找字符串
- qt保存文件的默认路径_Qt将文件保存到指定目录下(另存为的功能)
- 一个屌丝程序猿的人生(九十)