Python爬虫实战——签名软件设计(二)GUI界面

Python爬虫实战


关于本文:
上一篇文章我们介绍了POST方法的使用,现在我们就说一下界面设计以及方法的调用


使用模块

from Tkinter import *
import tkMessageBox
import urllib,urllib2,re
from PIL import Image
import requests

1.窗口的设计
代码解析
这里写图片描述

root = Tk()#创建窗口
root.title('python签名设计')
root.geometry('480x100+300+400')
Label(root,text='姓 名:',font=("微软雅黑",20),fg='red').grid()#文本框
nameent=Entry(root,font=("微软雅黑",20))
nameent.grid(row=0,column=1)
button =Button(root,text='一键设计签名',font=("微软雅黑",15),width='15',height='1',command=getImg)
button.grid(row=1,column=1)
mainloop()

第一行root = Tk()用于创建一个空白的窗口,作为主载体。代码第二行,第三行分别是对窗口进行命名以及设计窗口的初始大小,再屏幕中的位置。

第四行 Label(root,text=’姓 名:’,font=(“微软雅黑”,20),fg=’red’).grid() 在窗口中放置文本组件,文本的内容是“姓名:”,并且设置其大小字体和颜色。

第六行的Entry是设置一个可输入文本框,并将用户输入的数据保存在nameent变量中,在后面使用。

第八行Button是设置一个按钮,这里设置了按钮上的文字,大小,宽高以及点击按钮后调用的方法getImg。最后mainloop()的意义是使得窗口一直存在。

这样我们就设计完了一个简单功能的窗口了


2.获得我们的签名图
在点击了“一键设计签名”按钮后,程序就会为我们到网上去访问上一篇提到的网站,将请求头和参数POST上去,然后爬虫爬到图片,下载下来并打开。如下图:
这里写图片描述

代码解析

def getImg():
    name=nameent.get().encode('utf-8')
    if not name:
        tkMessageBox.showinfo('温馨提示','请先输入姓名!')
        return
    data1={
            'word':'%s'%name,
            'sizes':'60',
            'fonts':'jfcs.ttf',
            'fontcolor':'# 000000',
            }
    header={
            'Host':'www.uustv.com',
            'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0",
            'Accept':"text/html,application/xhtml+x…lication/xml;q=0.9,*/*;q=0.8",
            'Accept-Language':  "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
            'Accept-Encoding':  "gzip, deflate",
            'Referer':"http://www.uustv.com/",
            'Content-Type': "application/x-www-form-urlencoded",
            'Content-Length':"51",
            'Cookie':"bdshare_firstime=1499938694498",
            'Connection':"keep-alive",
            'Upgrade-Insecure-Requests':"1",
            'Cache-Control' :"max-age=0",
            }
    html1 = requests.post('http://www.uustv.com/',headers=header,data =data1)
    html = html1.text
    reg=r'<div class="tu">\xef\xbb\xbf<img src="(.*?)"/></div>'
    print html
    imgurl='http://www.uustv.com/%s' %re.findall(reg,html)[0]
    urllib.urlretrieve(imgurl,'D://%s.gif' %name.decode('utf-8').encode('gbk'))
    try:
        im=Image.open('%s.gif' %name.decode('utf-8').encode('gbk'))
        im.show()
        im.close()
    except Exception,e:
        print '请自行打开图片'

这里我们自定义一个getImg方法,使用name=nameent.get().encode(‘utf-8’)获得我们之前输入的name值,然后先判断有没有输入,如果用户没有输入就点击了按钮。就会弹出提示窗:

这里写图片描述

这一功能使用tkMessageBox实现。接下来就是使用requests库将数据与请求头发给网站,模拟用户在网站上的输入以及点击提交按钮。这样会返回提交后的网站源码存入html变量中,使用正则匹配找到图片的地址下载即可。(这方面有问题可看我的博客—— python爬虫:短代码实现多线程爬虫)

小结:
到这里我们的界面以及POST就介绍完了,下一篇文章会为大家介绍如何使用pyinstaller把py文件转成exe文件,实现在无python环境的电脑上的程序通用。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值