学习模拟登录——获取参数servertime等

2015-12-08  15:36:59

获取get包的参数

别人的代码:

1 def sServerData(serverData):
2     p = re.compile('\((.*)\)')    # 定义正则表达式
3     jsonData = p.search(serverData).group(1)  # 通过正则表达式查找并提取分组1
4     data = json.loads(jsonData)
5     serverTime = str(data['servertime'])   # 获取data中的相应字段,Json对象为一个字典
6     nonce = data['nonce']
7     pubkey = data['pubkey']
8     rsakv = data['rsakv']  # 获取字段
9     return serverTime, nonce, pubkey, rsakv

 

其中jsondata是一个str类型的变量,要提取相应字段,就必须转化成字典使用。上面的json.load()函数可以编码(补充函数的功能)

还可以使用下列方法:

1 >>> a = "{'a': 'hi', 'b': 'there'}"
2 >>> b = eval(a)
3 >>> b
4 {'a': 'hi', 'b': 'there'}
5 >>> exec ("c=" + a)
6 >>> c
7 {'a': 'hi', 'b': 'there'}
8 >>>

 

最后的代码可以写成

 1 #-*- coding:UTF-8 -*-
 2 #爬虫的servertime的测试
 3 import urllib2
 4 import re
 5 import json
 6 serverurl="http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)&_=1407721000736"
 7 serverdata=urllib2.urlopen(serverurl).read()
 8 p = re.compile('\((.*)\)')    # 定义正则表达式
 9 jsonData = p.search(serverdata).group(1) 
10 zidata=eval(jsonData)
11 #jsondata是一个str类型的变量!!
12 data = json.loads(jsonData)
13 ##此处用match会报错:NONE对象没有group方法
14 serverTime = str(data['servertime'])   # 获取data中的相应字段,Json对象为一个字典
15 nonce = data['nonce']
16 pubkey = data['pubkey']
17 rsakv = data['rsakv']  # 获取字段
18 print serverTime ,nonce,pubkey,rsakv
19 
20 print serverdata
21 print jsonData
22 print type(jsonData)#["secvertime"]
23 print type(zidata)#["secvertime"]
24 print zidata["servertime"]
25 print zidata["nonce"]
26 print zidata["pubkey"]
27 print zidata["rsakv"]
28 #print data

 

posted @ 2015-12-08 15:32  小肚子鱼丸  阅读(463)  评论(0编辑  收藏  举报