日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python3 爬虫实战:为爬虫添加 GUI 图像界面 之 tkinter

發(fā)布時(shí)間:2024/7/23 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 爬虫实战:为爬虫添加 GUI 图像界面 之 tkinter 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

From:https://blog.csdn.net/Fan_shui/article/details/81611752

?

?

一、前言

?

  前面我們寫的爬蟲只能運(yùn)行在具有python環(huán)境的電腦上,若是把源代碼發(fā)給別人,很大可能性是運(yùn)行不了的,所以我們本節(jié)的目的是為爬蟲創(chuàng)建 GUI 界面,并打包成exe可執(zhí)行文件。

知乎:https://zhuanlan.zhihu.com/p/41866570

?

?

二、學(xué)習(xí)知識(shí)點(diǎn)

?

tkinter:tkinter 是 python 內(nèi)置的模塊,不用安裝,可直接導(dǎo)入

tkinter的學(xué)習(xí)是參考b站的一個(gè) python gui 界面設(shè)計(jì)的視頻 Python 教程:https://www.bilibili.com/video/av26214247?from=search&seid=10819799360989272623

Python GUI 編程(Tkinter) | 菜鳥教程:http://www.runoob.com/python/python-gui-tkinter.html

?

?

三、圖形界面

?

示例程序:

from tkinter import *def main():#創(chuàng)建空白窗口,作為主載體root = Tk()root.title('python')#顯示窗口mainloop()main()

運(yùn)行后產(chǎn)生下圖:

接下來設(shè)置窗口大小:root.geometry('600x300+398+279')

這個(gè)418x200可以通過qq的截圖工具得到,截圖的時(shí)候會(huì)有個(gè)數(shù)據(jù)一直在動(dòng),就是距離屏幕左上角的距離,后面的+398+279是顯示的是窗口在整個(gè)屏幕的位置

然后我們添加標(biāo)簽控件

#標(biāo)簽控件,窗口中放置文本組件 Label(root,text='請(qǐng)輸入下載的url:',font=("華文行楷",15),fg='black').grid()

控件的第一個(gè)參數(shù)基本都是我們的主載體,因?yàn)闃?biāo)簽是包含在我們的父載體下的。后面的grid是定位,定位有三種,grid,place,pack,其中g(shù)rid是網(wǎng)格式的定位,如下圖:

圖中的(0,0)表示0行h0列,(0,1)表示0行第二列。網(wǎng)格式定位的意思是說那些框架是按照?qǐng)D中的表格放置的,上面代碼中g(shù)rid中沒有傳入?yún)?shù),默認(rèn)為(0,0),即放在0行0列,效果如下圖

接下來我們放個(gè)輸入url的輸入框

#Entry是可輸入文本框 url_input=Entry(root,font=("微軟雅黑",15),width=50) url_input.grid(row=0,column=1)

grid這次定位在0行1列,與上一個(gè)標(biāo)簽控件在同一行。

下面我們?cè)黾觽€(gè)顯示輸出的控件,我們采用列表控件

#列表控件 text=Listbox(root,font=('微軟雅黑',15),width=45,height=10) #columnspan 組件所跨越的列數(shù) text.grid(row=1,columnspan=2)

columnspan表示合并兩個(gè)列

下面我們?cè)偬砑觾蓚€(gè)按鈕
設(shè)置按鈕 sticky對(duì)齊方式,N S W E

button = Button(root,text='開始下載',font=("微軟雅黑",15),command=Crawl_content).grid(row=2,column=0,sticky=W) button = Button(root,text='退出',font=("微軟雅黑",15),command=root.quit).grid(row=2,column=1,sticky=E)

其中第一個(gè)按鈕中添加了command,點(diǎn)擊這個(gè)按鈕時(shí),就會(huì)調(diào)用Crawl_content這個(gè)函數(shù)(現(xiàn)在還沒有寫這個(gè)函數(shù),先去掉),后面的grid中添加了sticky=W,sitcky是對(duì)齊方式,第二個(gè)botton主要是退出GUI界面

from tkinter import *def main():global url_input, text# 創(chuàng)建空白窗口,作為主載體 root = Tk()root.title('測(cè)試——貓眼電影')# 窗口的大小,后面的加號(hào)是窗口在整個(gè)屏幕的位置 root.geometry('550x400+398+279')# 標(biāo)簽控件,窗口中放置文本組件 Label(root, text='請(qǐng)輸入下載的url:', font=("華文行楷", 20), fg='black').grid()# 定位 pack包 place位置 grid是網(wǎng)格式的布局 #Entry是可輸入文本框 url_input = Entry(root, font=("微軟雅黑", 15))url_input.grid(row=0, column=1)# 列表控件 text = Listbox(root, font=('微軟雅黑', 15), width=45, height=10)# columnspan 組件所跨越的列數(shù) text.grid(row=1, columnspan=2)# 設(shè)置按鈕 sticky對(duì)齊方式,N S W E button = Button(root, text='開始下載', font=("微軟雅黑", 15)).grid(row=2, column=0, sticky=W)button = Button(root, text='退出', font=("微軟雅黑", 15), command=root.quit).grid(row=2, column=1, sticky=E)# 使得窗口一直存在 mainloop()main()

現(xiàn)在界面已經(jīng)做好了,本節(jié)主要是介紹界面設(shè)計(jì),爬蟲的內(nèi)容具體不再介紹,是個(gè)非常簡(jiǎn)單的小爬蟲

from tkinter import * import requests import os from bs4 import BeautifulSoup from pyquery import PyQuery as pq import csvos.chdir('E:\爬蟲數(shù)據(jù)')def crawl_content():url = url_input.get()headers = {'user-agent': 'user-agent'}file = csv.writer(open('貓眼電影.csv', 'w'))for i in range(0, 100, 10):new_url = url + '?offset=%d' % iprint('在解析網(wǎng)址中:', new_url)req = requests.get(url=new_url, headers=headers)html = req.textdoc = pq(html)items = doc('dl.board-wrapper dd').items()for each in items:title = each.find('a').text()# 添加數(shù)據(jù) text.insert(END, title)# 文本框向下滾動(dòng) text.see(END)# 更新 text.update()print('已抓取完畢')def main():global url_input, text# 創(chuàng)建空白窗口,作為主載體 root = Tk()root.title('測(cè)試——貓眼電影')# 窗口的大小,后面的加號(hào)是窗口在整個(gè)屏幕的位置 root.geometry('550x400+398+279')# 標(biāo)簽控件,窗口中放置文本組件 Label(root, text='請(qǐng)輸入下載的url:', font=("華文行楷", 20), fg='black').grid()# 定位 pack包 place位置 grid是網(wǎng)格式的布局 #Entry是可輸入文本框 url_input = Entry(root, font=("微軟雅黑", 15))url_input.grid(row=0, column=1)Label(root, text='貓眼電影url: http://maoyan.com/board/4', font=("微軟雅黑", 10), fg='black').grid(row=1)# 列表控件 text = Listbox(root, font=('微軟雅黑', 15), width=45, height=10)# columnspan 組件所跨越的列數(shù) text.grid(row=2, columnspan=2)# 設(shè)置按鈕 sticky對(duì)齊方式,N S W E button = Button(root, text='開始下載', font=("微軟雅黑", 15), command=crawl_content).grid(row=3, column=0, sticky=W)button = Button(root, text='退出', font=("微軟雅黑", 15), command=root.quit).grid(row=3, column=1, sticky=E)# 使得窗口一直存在 mainloop()main() # http://maoyan.com/board/4

url_input把它設(shè)置為全局變量,在爬蟲抓取的時(shí)候可以通過get()獲得我們輸入的url,同樣為了讓抓取的內(nèi)容顯示在我們的列表控件中,我們需要把text這個(gè)列表控件也設(shè)置為全局變量,然后在爬蟲中用text.insert()插入數(shù)據(jù)。

?

差點(diǎn)忘了打包了,需要用到pyinstaller,沒有安裝的話就 :pip install pyinstaller

然后cmd到需要打包的py文件的所在地,直接pyinstaller test.py會(huì)生成兩個(gè)文件夾,dist文件夾下面有個(gè)exe執(zhí)行文件,可以發(fā)送給別的電腦了。

?

?

?

總結(jié)

以上是生活随笔為你收集整理的python3 爬虫实战:为爬虫添加 GUI 图像界面 之 tkinter的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。