您的位置:首页 > 编程语言 > Python开发

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

2017-07-14 10:36 459 查看

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环境的电脑上的程序通用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息