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

 

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

 

 

一、前言

 

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

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

 

 

二、学习知识点

 

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

tkinter的学习是参考b站的一个 python gui 界面设计的视频 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():#创建空白窗口,作为主载体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 requests
import os
from bs4 import BeautifulSoup
from pyquery import PyQuery as pq
import 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: http://maoyan.com/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()
# http://maoyan.com/board/4

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

这里写图片描述

 

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

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

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

22条API设计的实践

来源:22条API设计的最佳实践 来源:dockone.io/article/2434604 原文:https://betterprogramming.pub/22-best-practices-to-take-your-api-design-skills-to-the-next-level-65569b200b9 曾经因为一个糟糕的API而感到沮丧吗? 在…

linux python 永久添加自己的模块路径

Linux 环境变量配置 : https://blog.csdn.net/freeking101/article/details/81013045 linux python 永久添加自己的模块路径 添加路径: cd /usr/local/python3/lib/python3.6/site-packages vi my.pth 1 . 临时性添加>>>import sys >>>sys.path.a…

边缘计算:智慧城市的下一个浪潮

来源:资本实验室 作者:王进目前,在全球,智慧城市建设处于一个概念到逐步落地的过程,而科技巨头与投资大佬是这一新浪潮重要的参与者。2017年10月,Alphabet旗下城市创新部门Sidewalk Labs宣布,将…

Nature:揭示大脑中的免疫记忆

来源:生物谷摘要:在一项新的研究中,德国研究人员报道身体中的炎症可能影响小鼠大脑中的免疫细胞的“记忆”。在一项新的研究中,德国研究人员报道身体中的炎症可能影响小鼠大脑中的免疫细胞的“记忆”。如果这一发现在人体中得到证…

电竞专业与计算机专业,2021电竞专业的大学排名 电竞专业主要上什么课程

2017年教育部下文增设电竞专业,电子竞技人才培养体系正式形成。为了让广大电竞爱好者,从业者,考生及家长全面客观地了解电竞教育现状,电竞专业高校排行榜应运而生!2021年电竞专业大学排行榜1、中国传媒大学南广学院中国…

计算机主机部件与外设的工作原理,计算机组成原理名词解释和简答

第一章名词解释:1.中央处理器:主要由运算器和控制器组成。控制部件,运算部件,存储部件相互协调,共同完成对指令的执行。2.ALU:对数据进行算术和逻辑运算处理的部件。3.数据通路:由操作元件和存储…

周志华:满足这三大条件,可以考虑不用深度神经网络

来源: AI科技大本营摘要:4 月 15 日举办的京东人工智能创新峰会上,刚刚上任京东人工智能南京分院学术总顾问的周志华教授做了《关于深度学习一点思考》的公开分享。近年来,深度神经网络在语音、图像领域取得突出进展,以…

ibatis常用的集中判断语句

<isPropertyAvailable> 属性是存在<isNotPropertyAvailable> 属性不存在<isNull> 属性值是null<isEmpty> 判断Collection.size<1或String.length()<1<isEqual> 等于<isNotEqual> 不等于<isGreaterThan> 大于<isGreaterEqua…

网络计算机显示10,win10电脑网络显示一个球怎么回事

win10电脑网络显示一个球怎么回事&#xff1f;win10上不了网怎么办&#xff1f;其实这个是网络连接图标&#xff0c;只是因为没网络了就会变成地球图标。那么当出现win10网络变成球状怎么办呢&#xff1f;下面小编教下大家win10电脑网络显示一个球的解决方法。方法一&#xff1…

专家观点 | 李德仁:基于云计算的智慧城市运营脑

来源&#xff1a;智慧城市产业与技术创新战略联盟中国科学院、中国工程院院士李德仁发表了“基于云计算的智慧城市运营脑”的主题报告&#xff0c;深度解读了以公共云服务平台为核心的智慧城市运营脑。首先&#xff0c;李院士就智慧城市及其应用发表了自己的见解。他认为&#…

python3 中的 eval 函数

From&#xff1a;http://blog.csdn.net/zhanh1218/article/details/37562167 Python:eval的妙用和滥用&#xff1a;https://blog.csdn.net/zhanh1218/article/details/37562167 python eval()&#xff1a;http://www.cnblogs.com/dadadechengzi/p/6149930.html Python eval 函…

html超链接去虾线,挑虾线别只会用牙签了,渔民都是这样做的,1秒处理一个,超方便...

现在大家的生活条件已经越来越好&#xff0c;所以说人们在城市的时候也是越来越注意饮食这一方面了&#xff0c;但其实大家在做饭的时候都喜欢买上一些营养丰富的食材&#xff0c;就像是在最近几年海鲜也是让大家都非常喜欢的。海鲜是我们日常生活中都非常喜欢的一个美食&#…

AI将成科学家“高级定制”工具

来源&#xff1a;科技日报 作者&#xff1a;房琳琳化学家有了新的实验助手——人工智能&#xff08;AI&#xff09;。随着深度学习算法的进一步应用&#xff0c;AI计算机程序能帮助药物化合物等小有机分子产生所需的反应序列&#xff0c;制定合成路径。《自然》杂志近日发表了…

华为式创新与海尔式创新——两条道路考验中国制造

来源&#xff1a;企业管理杂志&#xff08;ID&#xff1a;qyglzz&#xff09;作者&#xff1a;吴兴杰&#xff0c;中国管理科学研究院专家咨询委员会副主任、学术委员会委员、研究员以华为为代表的聚合化创新之路非常难走而又不得不走&#xff0c;否则永远只能当二流甚至三流企…

Python 日期 的 加减 等 操作

datetime — Basic date and time types&#xff1a;https://docs.python.org/3.8/library/datetime.html dateutil --- powerful extensions to datetime&#xff1a;https://dateutil.readthedocs.io/en/stable/index.html Python time 和 datetime 的常用转换处理&#xf…

牛津大学计算机系主任:人工智能立法重在抓机遇、防危害

来源&#xff1a;科技日报 作者&#xff1a;郑焕斌“人工智能立法的重点应在于充分利用AI技术所提供的各种机遇&#xff0c;构建适宜的环境以激励、培育大量AI初创公司和新服务的发展&#xff0c;防范和应对AI技术所带来的各种潜在危害。”牛津大学计算机系主任迈克尔伍尔德里…

关于deepearth的一点小问题

我下载的deepEarth的源代码&#xff0c;编译以后有错误&#xff0c;不知怎么办&#xff0c;不知道各位用没用过deepEarth啊&#xff1f;请高手指教&#xff01; 转载于:https://www.cnblogs.com/kakaleilei/archive/2010/03/09/1681608.html

计算机术语局部性,【计算机基础】程序的局部性简介

什么是局部性&#xff1f;局部性分类局部性有什么作用&#xff1f;局部性举例数据引用的局部性取指令的局部性结论完整代码什么是局部性&#xff1f;程序倾向于使用它们最近使用的地址接近或相等的数据和指令。局部性分类局部性主要分为时间局部性和空间局部性。时间局部性&…

卫星还在“织网” 北斗时代尚需时日

来源&#xff1a;科技日报 作者&#xff1a;付丽丽生活在大都市里的人们&#xff0c;出门如果没有手机导航&#xff0c;会感觉自己像盲人一样不会走路。而让人更无法忍受的&#xff0c;则是傻导航的瞎导乱导&#xff0c;“我就老跟导航吵架&#xff0c;气得我把手机摔了的心都…

Python3.5 queue 模块详解 和 进程间通讯

queue — A synchronized queue class&#xff1a;https://docs.python.org/3/library/queue.html 菜鸟教程 - Python3 多线程&#xff1a;http://www.runoob.com/python3/python3-multithreading.html python3 队列&#xff1a;https://cloud.tencent.com/developer/informa…