摘要:,庫的使用,注意已經(jīng)與有了很大不同。對于下面的,定義了一些窗口屬性,接下來在代碼中我會簡單記錄一下它的用法。
這次練習(xí)的題目是實(shí)現(xiàn)一個(gè)簡單的RSS功能,需要了解的知識點(diǎn):
tkinter,在上一篇《簡單的記事本》中已經(jīng)了解了一些tkinter的用法,在這里延續(xù)了上一篇,加深一下印象。
urllib,HTMLPaser庫的使用,注意python3已經(jīng)與python2有了很大不同。
# -*- coding:utf-8 -*- #編碼聲明 # file: run_rss_one.py #文件名 import tkinter import urllib import requests from html.parser import HTMLParser import os #導(dǎo)入方法模塊 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,根據(jù)這個(gè)模板你可以添加你自己需要從網(wǎng)頁上獲取的內(nèi)容了,假設(shè)你的網(wǎng)頁中有標(biāo)簽p,試一試新增一個(gè)屬性self.a_p
另外對于HTMLParser,這個(gè)了解起來可以需要費(fèi)一些功夫,不過又有什么關(guān)系呢,你所浪費(fèi)掉的時(shí)間總會在某個(gè)時(shí)候得到收獲的,人生嘛時(shí)間不浪費(fèi)在這里也會浪費(fèi)在那里。
對于下面的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在這個(gè)函數(shù)中展示了輸出的東西,當(dāng)點(diǎn)擊按鈕時(shí)候,就會顯示到文本框中 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定義一個(gè)提示輸入的內(nèi)容,然后把這個(gè)內(nèi)容放置到輸入框的下方 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() #做一個(gè)判斷如果是本地路徑就獲取文件名 if os.path.isdir(url): #如果要循環(huán)讀取目錄及子目錄,用os.walk dir=os.listdir(url) #把路徑下所有的文件及目錄都展示在tkinter的文本框中,請回顧init中內(nèi)容,self.edit本質(zhì)就是一個(gè)Text阿 for dir_n in dir: self.edit.insert(tkinter.END,url+ " " +dir_n+" ") #在這里也可以繼續(xù)深入,對路徑下的文件判斷,比如獲取文中的幾行內(nèi)容,抑或是對路徑下的目錄繼續(xù)統(tǒng)計(jì)下去 else: #注意python3的用法要加request response=urllib.request.urlopen(url) page = response.read() # 讀取URL內(nèi)容 hp = MyHtmlParser(self.edit) #解析html hp.feed(page.decode("utf-8")) #feed(),主要用于接受帶html標(biāo)簽的str,當(dāng)調(diào)用這個(gè)方法并提供相應(yīng)的data時(shí),實(shí)例開始執(zhí)行 hp.close()#結(jié)束執(zhí)行close()
在這里通過HTMLPaser對解析html有了一個(gè)簡單的了解,在下一篇文章中,會繼續(xù)延續(xù)此文的內(nèi)容,主要重點(diǎn)放在獲取某個(gè)網(wǎng)站的特定內(nèi)容。
所以今天你走過的路決定了你明天可以走的路,每一個(gè)障礙都要及時(shí)解決,不要輕易繞過
然后再添加上主體控制部分,就可以運(yùn)行你的文件試一試了。
root = tkinter.Tk() root.title("RSS 閱讀器") window = Window(root) root.minsize(700,500) root.maxsize(700,500) root.mainloop()
新手之作,歡迎探討一塊兒學(xué)習(xí)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38294.html
摘要:最近在練習(xí)一個(gè)關(guān)于項(xiàng)目的列表,拿到列表看到這是要實(shí)現(xiàn)一個(gè)記事本功能,剛開始拿到題目真有點(diǎn)懵。尤其是試驗(yàn)之后發(fā)現(xiàn)一定要用類實(shí)現(xiàn)起來才簡單一些,對于這點(diǎn)類,,要知道本人已經(jīng)接觸語言多年,但對于面向?qū)ο筮€是一竅不通。 最近在練習(xí)一個(gè)關(guān)于python項(xiàng)目的列表,拿到列表看到這是要實(shí)現(xiàn)一個(gè)記事本功能,剛開始拿到題目真有點(diǎn)懵。雖然用python實(shí)現(xiàn)excel的處理已經(jīng)很熟悉了,且已經(jīng)把python...
摘要:已獲原作者授權(quán)原系列地址下面我們將以中最簡單的控件控件開始這個(gè)系列的教程在中控件用以顯示文字和圖片通常被用來展示信息而非與用戶交互譯者注也可以綁定點(diǎn)擊等事件只是通常不這么用程序員的教程怎么能少了我們尊重這個(gè)傳統(tǒng)但我們不說讓我們來秀出吧下面的 已獲原作者授權(quán). 原系列地址: Python Tkinter Hello Tkinter Label 下面我們將以 Tkinter 中最簡單的控...
摘要:代碼思路通過獲取輸入內(nèi)容股票代碼,然后通過按鍵添加,按鍵刪除,添加在列表中的代碼都能通過查詢按鈕獲取到最新的股票信息。唯一的遺憾是沒有實(shí)現(xiàn)手動選擇更新頻率。當(dāng)然使用也是沒問題噠直接得到的就是格式的則需要轉(zhuǎn)換格式簡易股票查詢不足之處請見諒 繼續(xù)練習(xí)tkinter,順便學(xué)習(xí)如何抓取網(wǎng)頁內(nèi)容。 使用urllib和requests都能得到url中的內(nèi)容,有一丁點(diǎn)兒的區(qū)別。代碼思路:通過Entr...
摘要:在這個(gè)窗口之上,可以添加各種輸入框按鈕文本等,可以增加對各種動作的處理。事件要與特定的控件相綁定,比如按鈕有點(diǎn)擊事件,輸入框有按鍵事件,窗體有關(guān)閉事件等。 在大多數(shù)時(shí)候,我們都在黑黢黢的控制臺里執(zhí)行 Python 腳本。這看起來很酷很 GEEK。但對于部分場景下的用戶來說,這樣就不大美觀和人性化了:我們需要交互更方便的圖形化產(chǎn)品,也就是 GUI (圖形用戶界面,Graphical Us...
摘要:已獲原作者授權(quán)原系列地址簡介提供了一系列的對話框可以用來顯示文本消息提示警告信息和錯(cuò)誤信息選擇文件或顏色其他一些簡單的對話框還可以請求用戶輸入文本整數(shù)或數(shù)字下面是一個(gè)典型的對話框使用場景在應(yīng)用程序中經(jīng)常會有退出按鈕如下點(diǎn)擊按鈕會彈出一個(gè)確認(rèn) 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介 Tkinter 提供了一系列的對話框, 可以用來顯示文本消息, 提示警告信息...
閱讀 939·2021-11-22 12:09
閱讀 3710·2021-09-27 13:36
閱讀 1397·2021-08-20 09:37
閱讀 4016·2019-12-27 12:22
閱讀 2360·2019-08-30 15:55
閱讀 2364·2019-08-30 13:16
閱讀 2822·2019-08-26 17:06
閱讀 3440·2019-08-23 18:32