#coding=utf-8
#作者:ewang
#版本:2.7
#功能描述:编写python版本,对特定的网站,获取相关的json值
import socket
import thread
import urlparse
import select
import threading
import re
import json
import multiprocessing
BUFLEN=8192
class Proxy(object):
def __init__(self,conn,addr):
self.source=conn
self.request=""
self.Json=""
self.Jrespone=""
self.destnation=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.run()

def get_headers(self):
header=''
while True:
header+=self.source.recv(BUFLEN)
index=header.find('\n')
if index >0:
break
self.request=header[index+1:]


def conn_destnation(self):
ip=socket.gethostbyname("要获取数据的页面")
self.destnation.connect_ex((ip,80))
data="%s %s %s\r\n" %("POST","URL","HTTP/1.1")
self.destnation.send(data+self.request)
item=re.findall('\"props\"\s*:(.+})\,',self.request,re.S)
item=item[0].replace(" ","")
#对json文件编码
Jdumps=json.dumps(item,sort_keys=True)
#对json文件解码
Jrespone=json.loads(Jdumps)
json_respone=json.loads(item)
self.Json=json_respone
self.Jrespone=Jrespone
if self.Json["appName"]=="event":
print self.Jrespone

def run(self):
self.get_headers()
self.conn_destnation()




class Server(object):

def __init__(self,host,port):
self.server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.server.bind((host,port))
self.server.listen(5)
self.start()

def start(self):
while True:
try:
conn,addr=self.server.accept()
thread.start_new_thread(Proxy(conn,addr),())
except:
pass

if __name__=='__main__':
print u"服务器IP:",
serverIp=str(raw_input())
print u"服务器端口号:",
serverPort=int(raw_input())
print u"开始获取数据........"
p = multiprocessing.Process(target = Server, args = (serverIp,serverPort))
p.start()


该脚本是为了针对数据测试中,提高工作效率,针对特定于网页来进行json数据的获取,通过json数据与预期的json数据进行比对。
代码中的“URL”是特定网站的URL,可以根据需求进行改动,可以把之前的代码与此相结合,来达到自己的需求。为使代码运行快,采用线程和进程来提高运行速度