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环境的电脑上的程序通用。
相关文章推荐
- Python爬虫实战——签名软件设计(一)python POST模拟网页按钮点击
- 学习Python就业有哪些方向?附加视频教程(python3从入门到进阶(面向对象),实战(爬虫,飞机游戏,GUI)视频教程)
- Python: Tkinter实现GUI界面
- 选择Python GUI界面开发工具
- Python爬虫框架Scrapy 学习笔记 10.3 -------【实战】 抓取天猫某网店所有宝贝详情
- python图形界面(GUI)设计
- Python3.4 GUI界面教程(菜单栏)
- python 3.0 GUI界面例子
- python爬虫实战之模拟正方教务系统登录查询成绩
- Python爬虫框架Scrapy 学习笔记 10.1 -------【实战】 抓取天猫某网店所有宝贝详情
- Python GUI 2048的图形界面实现(三)
- Python爬虫框架Scrapy实战之定向批量获取职位招聘信息
- python爬虫实战1
- Python爬虫框架Scrapy实战之定向批量获取职位招聘信息
- Python爬虫框架Scrapy实战之安装
- Python爬虫框架Scrapy 学习笔记 10.2 -------【实战】 抓取天猫某网店所有宝贝详情
- Python+MongoDB 爬虫实战
- python之GUI自定义界面设计 2014-4-10
- python爬虫实战,多线程爬取京东jd html页面:无需登录的网站的爬虫实战 推荐
- python 爬虫 实战(一) —— 抓取学校开课数据