600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python3 爬虫实战:为爬虫添加 GUI 图像界面 之 tkinter

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

时间:2024-05-31 10:45:47

相关推荐

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

From:/Fan_shui/article/details/81611752

一、前言

前面我们写的爬虫只能运行在具有python环境的电脑上,若是把源代码发给别人,很大可能性是运行不了的,所以我们本节的目的是为爬虫创建 GUI 界面,并打包成exe可执行文件。

知乎:/p/41866570

二、学习知识点

tkinter:tkinter 是 python 内置的模块,不用安装,可直接导入

tkinter的学习是参考b站的一个 python gui 界面设计的视频 Python 教程:/video/av26214247?from=search&seid=10819799360989272623

Python GUI 编程(Tkinter) | 菜鸟教程:/python/python-gui-tkinter.html

三、图形界面

示例程序:

from tkinter import *def main():#创建空白窗口,作为主载体root = Tk()root.title('python')#显示窗口mainloop()main()

运行后产生下图:

接下来设置窗口大小:root.geometry('600x300+398+279')

这个418x200可以通过qq的截图工具得到,截图的时候会有个数据一直在动,就是距离屏幕左上角的距离,后面的+398+279是显示的是窗口在整个屏幕的位置

然后我们添加标签控件

#标签控件,窗口中放置文本组件Label(root,text='请输入下载的url:',font=("华文行楷",15),fg='black').grid()

控件的第一个参数基本都是我们的主载体,因为标签是包含在我们的父载体下的。后面的grid是定位,定位有三种,grid,place,pack,其中grid是网格式的定位,如下图:

图中的(0,0)表示0行h0列,(0,1)表示0行第二列。网格式定位的意思是说那些框架是按照图中的表格放置的,上面代码中grid中没有传入参数,默认为(0,0),即放在0行0列,效果如下图

接下来我们放个输入url的输入框

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

grid这次定位在0行1列,与上一个标签控件在同一行。

下面我们增加个显示输出的控件,我们采用列表控件

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

columnspan表示合并两个列

下面我们再添加两个按钮

设置按钮 sticky对齐方式,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)

其中第一个按钮中添加了command,点击这个按钮时,就会调用Crawl_content这个函数(现在还没有写这个函数,先去掉),后面的grid中添加了sticky=W,sitcky是对齐方式,第二个botton主要是退出GUI界面

from tkinter import *def main():global url_input, text# 创建空白窗口,作为主载体 root = Tk()root.title('测试——猫眼电影')# 窗口的大小,后面的加号是窗口在整个屏幕的位置 root.geometry('550x400+398+279')# 标签控件,窗口中放置文本组件 Label(root, text='请输入下载的url:', font=("华文行楷", 20), fg='black').grid()# 定位 pack包 place位置 grid是网格式的布局 #Entry是可输入文本框 url_input = Entry(root, font=("微软雅黑", 15))url_input.grid(row=0, column=1)# 列表控件 text = Listbox(root, font=('微软雅黑', 15), width=45, height=10)# columnspan 组件所跨越的列数 text.grid(row=1, columnspan=2)# 设置按钮 sticky对齐方式,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()

现在界面已经做好了,本节主要是介绍界面设计,爬虫的内容具体不再介绍,是个非常简单的小爬虫

from tkinter import *import requestsimport osfrom bs4 import BeautifulSoupfrom pyquery import PyQuery as pqimport csvos.chdir('E:\爬虫数据')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('在解析网址中:', 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()# 添加数据 text.insert(END, title)# 文本框向下滚动 text.see(END)# 更新 text.update()print('已抓取完毕')def main():global url_input, text# 创建空白窗口,作为主载体 root = Tk()root.title('测试——猫眼电影')# 窗口的大小,后面的加号是窗口在整个屏幕的位置 root.geometry('550x400+398+279')# 标签控件,窗口中放置文本组件 Label(root, text='请输入下载的url:', font=("华文行楷", 20), fg='black').grid()# 定位 pack包 place位置 grid是网格式的布局 #Entry是可输入文本框 url_input = Entry(root, font=("微软雅黑", 15))url_input.grid(row=0, column=1)Label(root, text='猫眼电影url: /board/4', font=("微软雅黑", 10), fg='black').grid(row=1)# 列表控件 text = Listbox(root, font=('微软雅黑', 15), width=45, height=10)# columnspan 组件所跨越的列数 text.grid(row=2, columnspan=2)# 设置按钮 sticky对齐方式,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()# /board/4

url_input把它设置为全局变量,在爬虫抓取的时候可以通过get()获得我们输入的url,同样为了让抓取的内容显示在我们的列表控件中,我们需要把text这个列表控件也设置为全局变量,然后在爬虫中用text.insert()插入数据。

差点忘了打包了,需要用到pyinstaller,没有安装的话就 :pip install pyinstaller

然后cmd到需要打包的py文件的所在地,直接pyinstaller test.py会生成两个文件夹,dist文件夹下面有个exe执行文件,可以发送给别的电脑了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。