主要实现功能

从网页爬取关键信息,展示在自己写的界面上。
从http://www.5ppt.net/aricle.asp?id=3947&p=1,获取各个国家的疫情信息。

实现思路

  1. 使用request库,调用request.get(),爬取网页内容
  2. 使用re库,使用正则表达式,在网页内容中各个国家的疫情人数,存在一个列表中。
  3. 使用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中。
用两个()分别括住国家信息和人数信息,在正则结果中用列表的下标可以快速得到想要的信息。
注意要点:

  1. 这个网页一共有5页,通过网址最后的‘3947&p=几’来分开,比如‘3947&p=2’打开就是第二页,所以需要匹配五次,分别对5个不同的网址。
  2. 需要改变网页的编码方式,通常为‘UTF-8’,也可以写成r.encoding = r.apparent_encoding,汉字不会变为乱码。
  3. 匹配结果是列表,包含两个元素的列表,需要把他添加到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循环得到进度条列表和标签列表,相对简单
注意要点:

  1. 把进度条和标签对象,一个一个添加到对应的列表中
  2. 单独创建一个按钮对象,并且需要间接点击触发的事件。
  3. 各个控件的位置需要调试放在合适的位置。
    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学习——正则表达项目相关推荐

  1. Python 之正则表达re.compile()与re.findall()详解

    在使用爬虫提取网页中的部分信息时,采用到了re.compile()与re.findall()两种方法,目的:把网页中的"某某城市土地规划表"截取并打印出来. 网页中的代码: < ...

  2. Python 学习 正则re解析详解

    一.学习正则的目的 应用场景举例: ① 提取xml文件里的信息 有些xml文件应用编辑器的一些读取库可能无法实现效果,但是用正则的话基本上能解决绝大多数参数匹配问题.如以下提取头条等app的user_ ...

  3. python中正则表达以及多线程,建立服务器端

    多重继承 我们先来看一下代码: class Father(object):def __init__(self, name):self._name = namedef drink(self):print ...

  4. Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段

    大家好,我是梦雅. \ 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. \ \ \ 阶段一:Python基础[ 初入江湖] \ Li ...

  5. 小猪的Python学习之旅 —— 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中

    小猪的Python学习之旅 -- 14.项目实战:抓取豆瓣音乐Top 250数据存到Excel中 标签:Python 一句话概括本文: 利用Excel存储爬到的抓取豆瓣音乐Top 250数据信息,还有 ...

  6. 最新Python学习项目Top10!

    作者 | Mybridge 译者 | Linstancy 整理 | Jane 出品 | AI科技大本营 [导读]过去一个月里,我们对近1000个Python 学习项目进行了排名,并挑选出热度前10的项 ...

  7. 如何用 Python 进行基于深度学习的计算机视觉项目开发?

    令人惊喜的"智能"年代 深度学习有着广阔的前景 我们正处在一个"智能"的年代,比如智能手机中的语音助手.机器翻译和人脸识别:战胜过日本将棋冠军.国际象棋冠军, ...

  8. python从零基础到项目实战怎么样-2018完整Python零基础到项目精通的学习书籍

    Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏.Python编程语言的流行直线上升,如何学习好Py ...

  9. python语言基础项目报告书_25个Python学习项目,值得推荐

    译者 | 弯月,责编 | 杨碧玉 出品 | CSDN(ID:CSDNnews) 根据2020年StackOverflow开发者调查报告,Python是世界上最受欢迎的语言之一,排名仅次于Rust和Ty ...

最新文章

  1. 灵光一现的trick
  2. English trip M1 - AC6 How to make salad? Teacher:Patrick
  3. U-boot mkimage指定Linux内核地址时的两种方式
  4. c++之五谷杂粮---2
  5. JSON在PHP中的基本应用
  6. leetcode-125-Valid Palindrome
  7. 实例58:python
  8. ssh远程执行命令 linux,【Linux】SSH 远程执行命令
  9. 大公司和小公司的比较
  10. Gamma 矫正用于平衡光照不均匀
  11. uid_t gid_t等的定义
  12. 72+常用Axure交互原型免费下载
  13. 人工智能、机器学习、深度学习、神经网络的区别
  14. 基于Angularjs框架实现HTML5在线查看OFD文件
  15. 记录几个程序员接单搞副业的网站
  16. MATLAB | 那些你不得不知道的MATLAB小技巧(一)
  17. cuda安装linux命令,ubuntu下安装cuda的两种方法
  18. python重量转换程序_重量转换的极小项目说python查找字符串
  19. qt保存文件的默认路径_Qt将文件保存到指定目录下(另存为的功能)
  20. 一个屌丝程序猿的人生(九十)

热门文章

  1. sql加载配置文件时出错:_SQL复制:基本设置和配置
  2. SQL Server 2019中SQL表变量延迟编译
  3. 数据湖 数据仓库 数据集市_还原数据仓库/数据集市环境的两种方法
  4. css3 transition 和 animation实现走马灯
  5. Java BigDecimal 转换,除法陷阱(转)
  6. 数据库设计优化经验谈(转载)
  7. js实现(可实现局部打印)
  8. 在使用springMVC时,页面报的404异常
  9. Mac下安装jdk,并编写hello world
  10. PbootCMS V1.1.4 正式发布