资讯专栏INFORMATION COLUMN

python入门之tkinter实现简单的RSS功能

Cheng_Gang / 3231人阅读

摘要:,库的使用,注意已经与有了很大不同。对于下面的,定义了一些窗口属性,接下来在代码中我会简单记录一下它的用法。

这次练习的题目是实现一个简单的RSS功能,需要了解的知识点:

tkinter,在上一篇《简单的记事本》中已经了解了一些tkinter的用法,在这里延续了上一篇,加深一下印象。

urllib,HTMLPaser库的使用,注意python3已经与python2有了很大不同。

# -*- coding:utf-8 -*-
#编码声明
 
# file: run_rss_one.py
#文件名
 
import tkinter
import urllib
import requests
from html.parser import HTMLParser
import os



#导入方法模块
class MyHtmlParser(HTMLParser):

    def __init__(self,edit):
        HTMLParser.__init__(self)
        self.edit = edit
        self.a_title = False
        self.a_text = False
    def handle_starttag(self,tag,attrs):
        if tag == "title":
            self.a_title = True
        if tag == "a":
            self.a_text=True
        
    def handle_endtag(self,tag):
        if tag == "title":
            self.a_title = False
        if tag == "a":
            self.a_text = False
    def handle_data(self,data):
        if self.a_title:
            self.edit.insert(tkinter.END,data)
        if self.a_text:
            self.edit.insert(tkinter.END,data+"
")

这里class MyHtmlParser继承了HTMLParser,根据这个模板你可以添加你自己需要从网页上获取的内容了,假设你的网页中有标签p,试一试新增一个属性self.a_p
另外对于HTMLParser,这个了解起来可以需要费一些功夫,不过又有什么关系呢,你所浪费掉的时间总会在某个时候得到收获的,人生嘛时间不浪费在这里也会浪费在那里。

对于下面的class Window,定义了一些窗口属性,接下来在代码中我会简单记录一下它的用法。

class Window:
    def __init__(self, root):
        self.root = root     
        self.entryUrl = tkinter.Entry(root,width = 30)#Entry是输入控件
        self.entryUrl.place(x = 65, y = 15)#place定义了它放置的位置,然后如下的控件皆按照这样的方式定义好了
        #这里self.Get在这个函数中展示了输出的东西,当点击按钮时候,就会显示到文本框中
        self.get = tkinter.Button(root,
                text = "读取RSS", command = self.Get, font = ("system","10"))
        self.get.place(x = 350, y = 15)
        self.frame = tkinter.Frame(root, bd=2)
        self.scrollbar = tkinter.Scrollbar(self.frame)
        self.edit = tkinter.Text(self.frame,yscrollcommand = self.scrollbar.set,
                width = 96, height = 32)  
        self.scrollbar.config(command=self.edit.yview)
        self.edit.pack(side = tkinter.LEFT)
        self.scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
        self.frame.place(y = 60)
        #用label定义一个提示输入的内容,然后把这个内容放置到输入框的下方
        self.indicate=tkinter.Label(root,text="(Please input: local path or url)",fg="red")
        self.indicate.place(x=65,y=35)
 
    def Get(self):
        url = self.entryUrl.get()
        #做一个判断如果是本地路径就获取文件名
        if os.path.isdir(url):
            #如果要循环读取目录及子目录,用os.walk
            dir=os.listdir(url) 
            #把路径下所有的文件及目录都展示在tkinter的文本框中,请回顾init中内容,self.edit本质就是一个Text阿
            for dir_n in dir:
                self.edit.insert(tkinter.END,url+ " " +dir_n+"
") 
                #在这里也可以继续深入,对路径下的文件判断,比如获取文中的几行内容,抑或是对路径下的目录继续统计下去         
        else: 
            #注意python3的用法要加request
            response=urllib.request.urlopen(url)
            page = response.read()  # 读取URL内容
            hp = MyHtmlParser(self.edit) #解析html
            hp.feed(page.decode("utf-8")) #feed(),主要用于接受带html标签的str,当调用这个方法并提供相应的data时,实例开始执行
            hp.close()#结束执行close()

在这里通过HTMLPaser对解析html有了一个简单的了解,在下一篇文章中,会继续延续此文的内容,主要重点放在获取某个网站的特定内容。
所以今天你走过的路决定了你明天可以走的路,每一个障碍都要及时解决,不要轻易绕过

然后再添加上主体控制部分,就可以运行你的文件试一试了。

root = tkinter.Tk()
root.title("RSS 阅读器")
window = Window(root)
root.minsize(700,500)
root.maxsize(700,500)
root.mainloop()

新手之作,欢迎探讨一块儿学习。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38294.html

相关文章

  • python入门一个简单记事本

    摘要:最近在练习一个关于项目的列表,拿到列表看到这是要实现一个记事本功能,刚开始拿到题目真有点懵。尤其是试验之后发现一定要用类实现起来才简单一些,对于这点类,,要知道本人已经接触语言多年,但对于面向对象还是一窍不通。 最近在练习一个关于python项目的列表,拿到列表看到这是要实现一个记事本功能,刚开始拿到题目真有点懵。虽然用python实现excel的处理已经很熟悉了,且已经把python...

    xietao3 评论0 收藏0
  • [译][Tkinter 教程01] 入门: Label 控件

    摘要:已获原作者授权原系列地址下面我们将以中最简单的控件控件开始这个系列的教程在中控件用以显示文字和图片通常被用来展示信息而非与用户交互译者注也可以绑定点击等事件只是通常不这么用程序员的教程怎么能少了我们尊重这个传统但我们不说让我们来秀出吧下面的 已获原作者授权. 原系列地址: Python Tkinter Hello Tkinter Label 下面我们将以 Tkinter 中最简单的控...

    Sike 评论0 收藏0
  • Python 入门继续用tkinter实现股票查询

    摘要:代码思路通过获取输入内容股票代码,然后通过按键添加,按键删除,添加在列表中的代码都能通过查询按钮获取到最新的股票信息。唯一的遗憾是没有实现手动选择更新频率。当然使用也是没问题哒直接得到的就是格式的则需要转换格式简易股票查询不足之处请见谅 继续练习tkinter,顺便学习如何抓取网页内容。 使用urllib和requests都能得到url中的内容,有一丁点儿的区别。代码思路:通过Entr...

    cartoon 评论0 收藏0
  • Python门面担当 - Tkinter

    摘要:在这个窗口之上,可以添加各种输入框按钮文本等,可以增加对各种动作的处理。事件要与特定的控件相绑定,比如按钮有点击事件,输入框有按键事件,窗体有关闭事件等。 在大多数时候,我们都在黑黢黢的控制台里执行 Python 脚本。这看起来很酷很 GEEK。但对于部分场景下的用户来说,这样就不大美观和人性化了:我们需要交互更方便的图形化产品,也就是 GUI (图形用户界面,Graphical Us...

    Lucky_Boy 评论0 收藏0
  • [译][Tkinter 教程11] 对话框和消息框

    摘要:已获原作者授权原系列地址简介提供了一系列的对话框可以用来显示文本消息提示警告信息和错误信息选择文件或颜色其他一些简单的对话框还可以请求用户输入文本整数或数字下面是一个典型的对话框使用场景在应用程序中经常会有退出按钮如下点击按钮会弹出一个确认 已获原作者授权. 原系列地址: Python Tkinter 简介 Tkinter 提供了一系列的对话框, 可以用来显示文本消息, 提示警告信息...

    Anchorer 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<