最近偷懒学了下python ,做了两个小程序,纯属练手,今天来总结一下。
第一个程序是类似于网页爬虫,自动登录教务系统批量抓取学生信息。
第二个程序是利用腾讯微博远程关机,通过抓取腾讯微博获取关机指令来关机。
记录下这次学到(声明:许多东西都是参考过有的甚至直接copy网上的代码,未能一一附上出处请见谅):
MySQLdb模块:用来访问mysql数据库
con = MySQLdb.connect(db="test",user='',password='',charset="utf8")#获得一个连接对象,连接字符串中charset属性设置字符集与数据库一致,搭建mysql时默认的字符集是拉丁什么的,还要在数据库中设置test数据库的字符集为uft8为了显示中文
cur=con.cursor()#通过这个方法得到一个游标对象,一切操作通过游标进行
cur.execute(sqlstring)#执行一句SQL语句,不带参数的,返回受影响行数
那么如果要带参数呢,例如插入数据:cur.execute(sqlstring,data)#这里的data似乎很灵活,用列表元组都可以,列表没有测试过,我用的元组
见代码(部分代码取自点击打开链接):
value=[1,'hi rollen'] cur.execute('insert into test values(%s,%s)',value)
这个插入的数据进行了处理,当时只想到了这种方法
sql = "insert into personinfo values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
data = ()
for line in info:
#元组添加元素时只能和元组用‘+’连接,并且不加‘,’会被当作字符串而非元组
data = data +(line,)
#插入多个数据时要将数据放在一个元组里作为参数
if(cur.execute(sql,data)>0):
#count2 = count2 +1
print 'insert successfully...'
操作完数据库后记得关闭:cur.close()
con.commit()
con.close()
关闭的顺序是先关游标,再关连接
urllib2模块,urllib模块:
recv = urllib2.urlopen(url)#url='http://www.baidu.com'用于请求一个网址,会返回关于这个网址的一些东西,其中
recv.read()#是返回的HTML网页
recv.geturl()#是返回的跳转地址
postheader = {'User-Agent' : 'Mozilla/5.0 (Windows NT 5.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',
'Referer' : posturl}#构造的请求头数据,其中有的页面会对请求头中Referer 这个做验证,要求它为之前的地址,那么这时如果它为空可能访问不了目的网页
postdata = urllib.urlopen(data)#用来对字典型数据集data中的数据进行编码,以便发送到服务器,这个数据是发往服务器的数据
send = urllib2.request(posturl,postdata,postheader)#向posturl发送携带编码好的数据postdata并且请求头是postheader
response = urllib2.urlopen(send)#获取服务器返回的对象
re模块:用于匹配正则表达式
match = re.search('A[0-9]{5}',string)#在string中匹配一个大写A紧接着五个相连的数字的字符串
,匹配到成功后返回的对象不为空,否则返回的对象为空
匹配成功后得到的字符串是:A24531; 即一个大写A后面接五个数字,任何符合这个模式的字符串都会被匹配到存到match中,使用match.group()来遍历match得到匹配到的字符串
time模块:它的time.sleep(seconds)#让程序睡眠一段时间,参数为秒数,若为0.1则为100毫秒
platform模块:
platform.platform()#显示当前系统的详细信息
platform.system()#显示当前系统的简要信息,如‘Windows’
random模块:
random.randint(1,4)#伪随机获取1到4之间的整数
os模块:
os.system('halt')#执行系统命令,这个是在linux下关机的命令
os.system('shutdown.exe -f -s -t 20')#这是在windows下调用命令关机
还有内建的函数(所谓内建函数就是不用引入模块就可以直接使用的函数):
file = open(filename,openmode)#打开指定路径名称的文件,以‘w’(可写模式,清空覆盖旧文件),‘r’(可读模式),‘+’可读可写模式,‘a’(添加模式,在原文件末尾添加)等模式读写文件,用完文件后一定要记得fiel.close()关闭掉
lines = file.readlines()#读取多行
lines = file.readline()#读取一行
write(string)#写入字符串,没有writeline()
异常捕获:
try:
.........
exception Exception,ex:
print ex;