爬虫结合tkinter图形界面库制作个性签名应用程序

一、项目简介

1.内容:结合爬虫和tkinter图形开发界面开发个性签名应用程序,并利用pyinstaller打包工具将其打包为.exe可执行文件

2.个性签名的网站: (抓取免费的个性签名) http://www.uustv.com/

3.使用软件:pycharm

4.python3.7

5.涉及的类库:PIL、requests、lxml、tkinter、pyinstaller

6.参照的b站视频  https://www.bilibili.com/video/av21909348?from=search&seid=15033061118385928238

 

二、具体思路

思路:构建基本图形界面——获取、解析网页——返回给图形界面——打包为可执行文件

1.安装、导入需要用到的类库

from tkinter import *
from tkinter import messagebox
from PIL import Image,ImageTk
import requests
from lxml import etree

2.构建基本图形界面

#创建窗口
root = Tk()

#标题
root.title('个性签名设计')

#窗口大小、初始位置设置
root.geometry('600x300+500+200')

#标签控件
label = Label(root,text = '签名',font = ('华文行楷',20),fg = 'red')
label.grid(row = 0,column = 0)

#输入框
entry = Entry(root,font = ('微软雅黑',20))
entry.grid(row = 0,column = 1)

#点击按钮,触发getImage函数
button = Button(root,text = '设计签名',font = ('微软雅黑',20),command = getImage)
button.grid(row = 1,column = 0)

#消息循环  显示窗口
root.mainloop()

3.爬虫部分

(1)查询网页信息,得到是post请求,将post的信息加在代码里面

(2)函数代码

#模拟浏览器发送请求
def getImage():
    #爬取免费的个性签名网站
    startURL = 'http://www.uustv.com/'
    #获取用户输入的名字
    name = entry.get()
    
    #去空格
    name = name.strip()
    if name == ' ':
        messagebox.showinfo('提示','请输入用户名')
    else:
        
        #注意:这段必须加上post的信息name
        data = {
            'word':name,
            'sizes':60,
            'fonts':'jfcs.ttf',
            'fontcolor':'#000000'
        }
        result = requests.post(startURL,data = data)
        result = result.content.decode('utf-8')  #解决乱码问题
        
        #使用xpath解析网页
        #初始化
        html = etree.HTML(result)
        #获取图片 返回值是列表形式
        img = html.xpath('//div[@class = "tu"]/img/@src')
        #获取图片完整的路径
        imgURL = startURL + img[0]
        #获取图片内容
        response = requests.get(imgURL).content
        #保存文件 文件名为输入的名字
        f = open('{}.gif'.format(name),'wb')
        f.write(response)
        #显示图片
        bm = ImageTk.PhotoImage(file = '{}.gif'.format(name))
        label2 = Label(root,image = bm)
        label2.bm = bm
        label2.grid(row = 2,columnspan = 2)  #columnspan表示跨越多列

三、代码生成

# python
# -*- coding:utf-8 -*-
# author:Only time:2019/8/8

from tkinter import *
from tkinter import messagebox
from PIL import Image,ImageTk
import requests
from lxml import etree


#模拟浏览器发送请求
def getImage():
    startURL = 'http://www.uustv.com/'
    #获取用户输入的名字
    name = entry.get()
    #去空格
    name = name.strip()
    if name == ' ':
        messagebox.showinfo('提示','请输入用户名')
    else:
        data = {
            'word':name,
            'sizes':60,
            'fonts':'jfcs.ttf',
            'fontcolor':'#000000'
        }
        result = requests.post(startURL,data = data)
        result = result.content.decode('utf-8')  #解决乱码问题
        #使用xpath解析网页
        #初始化
        html = etree.HTML(result)
        #获取图片 返回值是列表形式
        img = html.xpath('//div[@class = "tu"]/img/@src')
        #获取图片完整的路径
        imgURL = startURL + img[0]
        #获取图片内容
        response = requests.get(imgURL).content
        f = open('{}.gif'.format(name),'wb')
        f.write(response)
        #显示图片
        bm = ImageTk.PhotoImage(file = '{}.gif'.format(name))
        label2 = Label(root,image = bm)
        label2.bm = bm
        label2.grid(row = 2,columnspan = 2)

#创建窗口
root = Tk()

#标题
root.title('个性签名设计')

#窗口大小、初始位置设置
root.geometry('600x300+500+200')

#标签控件
label = Label(root,text = '签名',font = ('华文行楷',20),fg = 'red')
label.grid(row = 0,column = 0)

#输入框
entry = Entry(root,font = ('微软雅黑',20))
entry.grid(row = 0,column = 1)

#点击按钮
button = Button(root,text = '设计签名',font = ('微软雅黑',20),command = getImage)
button.grid(row = 1,column = 0)

#消息循环  显示窗口
root.mainloop()

四、结果显示

五、运用pyinstaller打包工具打包为.exe应用程序

注意:  pyinstaller模块参数介绍

#鼠标放在.py文件所在的文件夹上面,按住shift,并点击鼠标右键,打开powersheel
#在powersheel输入代码为:
pyinstaller -F -w +自己的.py文件的路径

发布了22 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43930694/article/details/98885711
今日推荐