本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
以下文章來源于Python爬蟲與資料挖掘 ,作者:Python進階者
專案目標
通過選擇愛奇藝電影選項,我們可以將優質的電影資訊列印到文本框供自己查看,然后自己去觀看,
依賴工具
開發工具sublime text 3,360瀏覽器,
實作步驟
下面我們先看下軟體運行主界面,比較簡單:
下面小編就來跟大家講下具體的實作步驟,
打開網頁,F12分析:
可以看到,它是由一個ul標簽包裹,多個li子標簽構成,所以我們可以這樣做:
這樣就拿到了,所有影片的名字 主演和評分,就能方便我們直觀的查看電影狀況,再決定看哪一部,
其實還有一種比較有逼格的寫法,就是用正則匹配,
def parse_page(self,html): #編譯頁面電影內容正則 pattern = re.compile('<li.*?qy-mod-li.*?text-score">(.*?)<.*?title.*?>(.*?)<.*?title.*?>(.*?)<', re.S) items = re.findall(pattern, html) #查找 for item in items: yield { 'Movie_Name': item[1], #電影名 'Movie_actor': item[2].strip()[3:], #演員 'Movie_score': item[0] #評分 }
選擇哪種方法隨你挑,適合自己的才是最好的,哈哈哈!
然后,我們可以寫個gui界面將我們所想要的結果顯示在界面上,因為我們這次使用的是下拉串列框選擇選項然后顯示結果,我們需要使用一個新的gui組件 combobox組件,于是,可以這樣寫:
class gui: def __init__(self): self.root=tk.Tk() self.root.title("愛奇藝熱播好劇提前搜v1.0") self.root.geometry("700x600") self.lb=tk.Label(self.root,text='請選擇搜索型別') self.tt=tk.Text(self.root,width=40,height=30) self.cb=ttk.Combobox(self.root, width=12) self.cb['values']=('請選擇-----','綜合排序','熱播榜','好評榜','新上線') #設定下拉串列框的內容 self.cb.current(0) #將當前選擇狀態置為0,也就是第一項 self.cb.bind("<<ComboboxSelected>>",self.go) #系結go函式,然后觸發事件 self.lb.place(x=30,y=30) #組件位置 self.cb.place(x=154,y=30) self.tt.place(x=30,y=60,width=400,height=600) self.root.mainloop() #主頁面
這樣就寫好了,然后我們還可以將資料寫入到文本檔案,
def write_to_file(self,content):
with open('movie.txt', 'a', encoding='utf8')as f:
f.write(json.dumps(content, ensure_ascii=False) + '\n') #寫入檔案
因為yield 出的結果使用json好讀取些,而且具有格式化的功能,所以可以先把檔案先轉為json格式,這樣就可以了,
然后我們撰寫下拉串列框的函式,使得它選擇選項時出現對應的結果,
#下拉串列框事件 def go(self,*arg): if self.cb.get()=='請選擇-----': self.tt.delete('1.0','end') elif self.cb.get()=='綜合排序': self.tt.delete('1.0','end') self.main('https://list.iqiyi.com/www/1/-------------24-1-1-iqiyi--.html') elif self.cb.get()=='熱播榜': self.tt.delete('1.0','end') self.main('https://list.iqiyi.com/www/1/-------------11-1-1-iqiyi--.html') elif self.cb.get()=='好評榜': self.tt.delete('1.0','end') self.main('https://list.iqiyi.com/www/1/-------------8-1-1-iqiyi--.html') elif self.cb.get()=='新上線': self.tt.delete('1.0','end') self.main('https://list.iqiyi.com/www/1/-------------4-1-1-iqiyi--.html')
這里要注意的是,因為我們每次選擇不同,所以在選擇第二個選項時必須清楚前一個選項所顯示的結果,
最后,我們執行主函式,完成這些操作,
#主函式 def main(self,url): html = self.get_page(url) for item in self.parse_page(html): self.tt.insert('insert',item)#將內容插入到文本框 self.tt.insert('insert','\n') self.tt.update() #更新內容 self.write_to_file(item) #內容寫入檔案
我們可以看到效果圖如下:
小結
本文基于Python編程語言,打造了一個愛奇藝熱播好劇提前搜系統,方法行之有效,歡迎小伙伴們積極嘗試,本專案對于初學者來說還是比較友好的,希望可以幫到大家,學無止境,一起加油!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/234623.html
標籤:Python
上一篇:python 通過pip freeze、dowload打離線包及自動安裝【適用于保密的離線環境】
下一篇:SQLAlchemy 的基本使用
