本篇博客是上篇博客的延续,涉及到的知识点除了上篇博客所提到的字典、web应用、模块/包的之外,还涉及到简单的抓包、正则表达式以及Python的GUI设计。
还是老样子,先讲点知识点,再来干货。
一、正则表达式
举个例子,假如我经营着一家大型的上市公司,而作为我的秘书,我需要你提供一份去年2月公司所接收以及发送的所有电子邮件(注意,我前面强调的是大型的上市公司,这意味着工作量将会很大,你不可能挨着去一封一封找出来),那么,如果你能设计一个计算机程序来收集这些信息然后转发给我这无疑要好很多。
正则表达式为高级的文本模式匹配、抽取、操作、与/或文本形式的搜索和替换功能提供了基础。简单地说,正则表达式就是有一些字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,于是正则表达式能够按照一系列相似特征的字符串进行匹配。例如:
>>>example='abcdefg'
>>>m=re.compile(r'bcd')
>>>m.findall(m,a)
>>>print m
>>>bcd
在这儿需要解释的是r表示使用原始字符串,而compile(source, filename, mode[, flags[, dont_inherit]])是将source编译为代码或者AST对象。
二、抓包
百度:http://jingyan.baidu.com/article/3c343ff703fee20d377963e7.html
三、GUI设计
Tkinter是Python默认的GUI库,它基于TK工具包,能够快速开发和实现很多商业软件品质相当的GUI应用。
让GUI程序启动和运行起来需要以下5个步骤:
1、导入Tkinter模块
2、创建一个顶层窗口对象,用于容纳整个GUI应用。
3、在顶层窗口对象之上构建所有的GUI组件。
4、通过底层应用代码将这些组件组合起来。
5、进入主事件循环。
首先来个hello world:
>>>import Tkinter
>>>top=Tkinter.Tk()
>>>label=Tkinter.Label(top, text="hello world")
>>>label.pack()
>>>Tkinter.mainloop()
**********************************************************************************************************************************************************
好了,干货来了:
from Tkinter import *
import tkMessageBox
import re
import urllib,urllib2
def post(url,data):
req=urllib2.Request(url)
data=urllib.urlencode(data)
html=urllib2.urlopen(url,data)
html=html.read()
return html
def sheji():
url="***************8"
name=e1.get().encode("utf8")
data={"id":****,
"id1607":"<span style="font-family: Arial, Helvetica, sans-serif;">****</span><span style="font-family: Arial, Helvetica, sans-serif;">",</span>
"id1606":"<span style="font-family: Arial, Helvetica, sans-serif;">****</span><span style="font-family: Arial, Helvetica, sans-serif;">",</span>
"id1608":"jiqie_com",
"id1":"30",
"id2":"901",
"id3":"#0000FF",
"id4":"#0000DD",
"id5":"#0000AA",
"id6":"#000077"
}
text = post(url,data)
return text
def img():
photo = PhotoImage(file='%s.gif'%e1.get(),width="500",height="300")
a2 = Label(image = photo)
a2.image = photo
a2.grid(row=0,column=10)
def cu():
if e1.get()=="":
tkMessageBox.showinfo("please input your name")
else:
text=sheji()
reg=re.compile(r'***************')
reg=re.findall(reg,text)
imgurl = "******************8"+reg[0]
urllib.urlretrieve(imgurl,e1.get()+".gif")
img()
top=Tk()
top.title("python 练手")
top.geometry("+400+200")
top.resizable(width=False,height=False)
a1=Label(top,text="姓名")
a1.grid(row=0,column=0)
e1=Entry(top)
e1.grid(column=1,row=0)
b=Button(top,text="签名设计",command=cu)
b.grid(row=2,column=1)
top.mainloop()
**********************************************************************************************************************************************************
博客中的知识点来源:
核心编程
潭州公开课视频
Python编程实践
Python数据采集