ajax传输json数据格式 ajax发送json数据实例( 二 )


所以,这里就用到了让我们的虫去模拟人的操作 。在前篇一笔带过,其实就是通过修改Request-Headers中Cookie,User-Agent,Referer等信息来使我们的访问请求就像是真人访问一般 。而需要修改的内容可以在Headers中查看:
则可保存如下:
headers={‘Cookie’:’yfx_c_g_u_id_10000042=_ck18012900250116338392357618947; VISITED_MENU=%5B%228528%22%5D; yfx_f_l_v_t_10000042=f_t_1517156701630__r_t_1517314287296__v_t_1517320502571__r_c_2′,
‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36′,
‘Referer’:’http://www.sse.com.cn/assortment/stock/list/share/’
}
通常包含这三个元素即足以证明是‘人’ 。这样我们已经可以找的到数据了 。
四、处理分析数据(将数据JSON格式化并解析JSON)
好了,数据找到了,并且我们可以在开发者工具preview中看到,数据储存为JSON格式(JSON格式的数据本质上是一种被格式化了的字符串,遵循一定的语法规则),现在我们先按照原来的方法先利用requests先获取到数据:
import requests
url=’http://query.sse.com.cn/security/stock/getStockListData2.do?&jsonCallBack=jsonpCallback99887&isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=1&pageHelp.pageSize=25&pageHelp.pageNo=1&_=1517320503161′
response=requests.get(url,headers=headers) #注意,这一步即将我们‘人’的信息传入请求中
那么,下一步就要获取目标中的JSON数据,此时我们将开发者工具中Response复制后,粘贴到json在线解析及格式化验证验证是否是格式化的标准JSON数据 。
检验后发现结果出错
那么我们就需要分析哪里语法有问题,此处不过多赘述,直接贴出删除和添加的部分:
删除部分:开头的以及结尾的
添加部分:添加至开头,并在结尾添加‘}’即可看到解析出的JSON结构:
好了,到这里数据JSON格式化也基本完成 。而在解析时,我们需要用到python自带的json库以及jsonpath第三方库(若是windows系统直接在cmd输入pip install jsonpath 即可安装):
import json
from jsonpath import jsonpath #从jsonpath库中导入jsonpath方法
json_str='{“content”:’+response.text[19:-1]+’}’ #即将我们刚才分析出的结果进行格式化
unicodestr=json.loads(json_str) #json的loads()方法用于将json的字符串转换成python默认的unicode字符串,还有一个dumps()方法是将python对象转换成json字符串,其中的转换之间的关系不再赘述,有兴趣自行查阅相关资料
接下来就是通过jsonpath寻找我们需要的数据(类似于之前的soup.select()寻找的思想,但是这里是基于jsonpath的查询)
通过分析两个,我们可以轻易地发现其规律性,而jsonpath的使用可以参照jsonpath的简单入门,或者自行查阅官方文档 。
由于A股中A股名称代码与公司名称代码均一致,故:
COMPANY_CODE=jsonpath(a,’$..pageHelp..COMPANY_CODE’)#公司/A股代码
COMPANY_ABBR=jsonpath(a,’$..pageHelp..COMPANY_ABBR’)#公司/A股简称
totalShares=jsonpath(a,”$..pageHelp..totalShares”) #A股总资本
totalFlowShares=jsonpath(a,’$
..pageHelp..totalFlowShares’) #A股流动资本
至此,解析数据也完成了 。
五、整理打印数据
print(‘公司/A股代码’,’\t’,’公司/A股简称’,’\t’,’A股总资本’,’\t’,’A股流动资本’)
L1=list()
L2=list()
L3=list()
L4=list()
for x in COMPANY_CODE:
L1.append(x)
for x in COMPANY_ABBR:
L2.append(x)
for x in totalShares:
L3.append(x)
for x in totalFlowShares:


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: