当前位置:   article > 正文

python3爬虫实战(五):为爬虫添加GUI图像界面_text.grid()

text.grid()

一、前言

  前面我们写的爬虫只能运行在具有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) | 菜鸟教程

三、图形界面

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

运行后产生下图:
这里写图片描述
接下来设置窗口大小:

root.geometry('600x300+398+279')

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

然后我们添加标签控件

  1. #标签控件,窗口中放置文本组件
  2. 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的输入框

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

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

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

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

columnspan表示合并两个列

下面我们再添加两个按钮

设置按钮 sticky对齐方式,N S W E

  1. button =Button(root,text='开始下载',font=("微软雅黑",15),command=Crawl_content).grid(row=2,column=0,sticky=W)
  2. 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界面

  1. from tkinter import *
  2. def main():
  3. global url_input,text
  4. #创建空白窗口,作为主载体
  5. root = Tk()
  6. root.title('测试——猫眼电影')
  7. #窗口的大小,后面的加号是窗口在整个屏幕的位置
  8. root.geometry('550x400+398+279')
  9. #标签控件,窗口中放置文本组件
  10. Label(root,text='请输入下载的url:',font=("华文行楷",20),fg='black').grid()
  11. #定位 pack包 place位置 grid是网格式的布局
  12. #Entry是可输入文本框
  13. url_input=Entry(root,font=("微软雅黑",15))
  14. url_input.grid(row=0,column=1)
  15. #列表控件
  16. text=Listbox(root,font=('微软雅黑',15),width=45,height=10)
  17. #columnspan 组件所跨越的列数
  18. text.grid(row=1,columnspan=2)
  19. #设置按钮 sticky对齐方式,N S W E
  20. button =Button(root,text='开始下载',font=("微软雅黑",15)).grid(row=2,column=0,sticky=W)
  21. button =Button(root,text='退出',font=("微软雅黑",15),command=root.quit).grid(row=2,column=1,sticky=E)
  22. #使得窗口一直存在
  23. mainloop()
  24. main()

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

  1. from tkinter import *
  2. import requests
  3. import os
  4. from bs4 import BeautifulSoup
  5. from pyquery import PyQuery as pq
  6. import csv
  7. os.chdir('E:\爬虫数据')
  8. def Crawl_content():
  9. url=url_input.get()
  10. headers={'user-agent':'user-agent'}
  11. file=csv.writer(open('猫眼电影.csv','w'))
  12. for i in range(0,100,10):
  13. new_url=url+'?offset=%d'%i
  14. print('在解析网址中:',new_url)
  15. req=requests.get(url=new_url,headers=headers)
  16. html=req.text
  17. doc=pq(html)
  18. items=doc('dl.board-wrapper dd').items()
  19. for each in items:
  20. title=each.find('a').text()
  21. #添加数据
  22. text.insert(END,title)
  23. #文本框向下滚动
  24. text.see(END)
  25. #更新
  26. text.update()
  27. print('已抓取完毕')
  28. def main():
  29. global url_input,text
  30. #创建空白窗口,作为主载体
  31. root = Tk()
  32. root.title('测试——猫眼电影')
  33. #窗口的大小,后面的加号是窗口在整个屏幕的位置
  34. root.geometry('550x400+398+279')
  35. #标签控件,窗口中放置文本组件
  36. Label(root,text='请输入下载的url:',font=("华文行楷",20),fg='black').grid()
  37. #定位 pack包 place位置 grid是网格式的布局
  38. #Entry是可输入文本框
  39. url_input=Entry(root,font=("微软雅黑",15))
  40. url_input.grid(row=0,column=1)
  41. Label(root,text='猫眼电影url: http://maoyan.com/board/4',font=("微软雅黑",10),fg='black').grid(row=1)
  42. #列表控件
  43. text=Listbox(root,font=('微软雅黑',15),width=45,height=10)
  44. #columnspan 组件所跨越的列数
  45. text.grid(row=2,columnspan=2)
  46. #设置按钮 sticky对齐方式,N S W E
  47. button =Button(root,text='开始下载',font=("微软雅黑",15),command=Crawl_content).grid(row=3,column=0,sticky=W)
  48. button =Button(root,text='退出',font=("微软雅黑",15),command=root.quit).grid(row=3,column=1,sticky=E)
  49. #使得窗口一直存在
  50. mainloop()
  51. main()
  52. # http://maoyan.com/board/4

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

这里写图片描述

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

pip install pyinstaller
  • 1

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/759100
推荐阅读
相关标签
  

闽ICP备14008679号