摘要:,庫的使用,注意已經與有了很大不同。對于下面的,定義了一些窗口屬性,接下來在代碼中我會簡單記錄一下它的用法。
這次練習的題目是實現一個簡單的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()
新手之作,歡迎探討一塊兒學習。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38294.html
摘要:最近在練習一個關于項目的列表,拿到列表看到這是要實現一個記事本功能,剛開始拿到題目真有點懵。尤其是試驗之后發現一定要用類實現起來才簡單一些,對于這點類,,要知道本人已經接觸語言多年,但對于面向對象還是一竅不通。 最近在練習一個關于python項目的列表,拿到列表看到這是要實現一個記事本功能,剛開始拿到題目真有點懵。雖然用python實現excel的處理已經很熟悉了,且已經把python...
摘要:已獲原作者授權原系列地址下面我們將以中最簡單的控件控件開始這個系列的教程在中控件用以顯示文字和圖片通常被用來展示信息而非與用戶交互譯者注也可以綁定點擊等事件只是通常不這么用程序員的教程怎么能少了我們尊重這個傳統但我們不說讓我們來秀出吧下面的 已獲原作者授權. 原系列地址: Python Tkinter Hello Tkinter Label 下面我們將以 Tkinter 中最簡單的控...
摘要:代碼思路通過獲取輸入內容股票代碼,然后通過按鍵添加,按鍵刪除,添加在列表中的代碼都能通過查詢按鈕獲取到最新的股票信息。唯一的遺憾是沒有實現手動選擇更新頻率。當然使用也是沒問題噠直接得到的就是格式的則需要轉換格式簡易股票查詢不足之處請見諒 繼續練習tkinter,順便學習如何抓取網頁內容。 使用urllib和requests都能得到url中的內容,有一丁點兒的區別。代碼思路:通過Entr...
摘要:在這個窗口之上,可以添加各種輸入框按鈕文本等,可以增加對各種動作的處理。事件要與特定的控件相綁定,比如按鈕有點擊事件,輸入框有按鍵事件,窗體有關閉事件等。 在大多數時候,我們都在黑黢黢的控制臺里執行 Python 腳本。這看起來很酷很 GEEK。但對于部分場景下的用戶來說,這樣就不大美觀和人性化了:我們需要交互更方便的圖形化產品,也就是 GUI (圖形用戶界面,Graphical Us...
摘要:已獲原作者授權原系列地址簡介提供了一系列的對話框可以用來顯示文本消息提示警告信息和錯誤信息選擇文件或顏色其他一些簡單的對話框還可以請求用戶輸入文本整數或數字下面是一個典型的對話框使用場景在應用程序中經常會有退出按鈕如下點擊按鈕會彈出一個確認 已獲原作者授權. 原系列地址: Python Tkinter 簡介 Tkinter 提供了一系列的對話框, 可以用來顯示文本消息, 提示警告信息...
閱讀 948·2021-11-22 12:09
閱讀 3715·2021-09-27 13:36
閱讀 1406·2021-08-20 09:37
閱讀 4029·2019-12-27 12:22
閱讀 2366·2019-08-30 15:55
閱讀 2371·2019-08-30 13:16
閱讀 2832·2019-08-26 17:06
閱讀 3443·2019-08-23 18:32