使用Python爬取Json数据的示例代码


Posted in Python onDecember 07, 2020

一年一度的双十一即将来临,临时接到了一个任务:统计某品牌数据银行中自己品牌分别在2017和2018的10月20日至10月31日之间不同时间段的AIPL(“认知”(Aware)、“兴趣”(Interest)、“购买”(Purchase)、“忠诚”(Loyalty))流转率。

使用Fiddler获取到目标地址为:

https://databank.yushanfang.com/api/ecapi?path=/databank/crowdFullLink/flowInfo&fromCrowdId=3312&beginTheDate=20181020&endTheDate=20181031&toCrowdIdList[0]=3312&toCrowdIdList[1]=3313&toCrowdIdList[2]=3314&toCrowdIdList[3]=3315

本文中以爬取其中的AI流转率数据为例。

该地址返回的响应内容为Json类型,其中红框标记的项即为AI流转率值:

使用Python爬取Json数据的示例代码

实现代码如下:

import requests
import json
import csv
 
# 爬虫地址
url = 'https://databank.yushanfang.com/api/ecapi?path=/databank/crowdFullLink/flowInfo&fromCrowdId=3312&beginTheDate=201810{}&endTheDate=201810{}&toCrowdIdList[0]=3312&toCrowdIdList[1]=3313&toCrowdIdList[2]=3314&toCrowdIdList[3]=3315'
 
# 携带cookie进行访问
headers = {
'Host':'databank.yushanfang.com',
'Referer':'https://databank.yushanfang.com/',
'Connection':'keep-alive',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
'Cookie':'_tb_token_=iNkDeJLdM3MgvKjhsfdW; bs_n_lang=zh_CN; cna=aaj1EViI7x0CATo9kTKvjzgS; ck2=072de851f1c02d5c7bac555f64c5c66d; c_token=c74594b486f8de731e2608cb9526a3f2; an=5YWo5qOJ5pe25Luj5a6Y5pa55peX6Iiw5bqXOnpmeA%3D%3D; lg=true; sg=\"=19\"; lvc=sAhojs49PcqHQQ%3D%3D; isg=BPT0Md7dE_ic5Ie3Oa85RxaMxbLK3UqJMMiN6o5VjH8C-ZRDtt7aRXb3fXGEAVAP',
}
 
rows = []
for n in range(20, 31):
  row = []
  row.append(n)
  for m in range (21, 32):
    if m < n + 1:
      row.append("")
    else:
      
      # 格式化请求地址,更换请求参数
      reqUrl = url.format(n, m)
      
      # 打印本次请求地址
      print(url)
      
      # 发送请求,获取响应结果
      response = requests.get(url=reqUrl, headers=headers, verify=False)
      text = response.text
      
      # 打印本次请求响应内容
      print(text)
      
      # 将响应内容转换为Json对象
      jsonobj = json.loads(text)
      
      # 从Json对象获取想要的内容
      toCntPercent = jsonobj['data']['interCrowdInfo'][1]['toCntPercent']
      
      # 生成行数据
      row.append(str(toCntPercent)+"%")
      
  # 保存行数据    
  rows.append(row)
  
# 生成Excel表头
header = ['AI流转率', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
 
# 将表头数据和爬虫数据导出到Excel文件
with open('D:\\res\\pachong\\tmall.csv', 'w', encoding='gb18030') as f :
  f_csv = csv.writer(f)
  f_csv.writerow(header)
  f_csv.writerows(rows)
import csv
import json
import ssl
import urllib.request
 
# 爬虫地址
url = 'https://databank.yushanfang.com/api/ecapi?path=/databank/crowdFullLink/flowInfo&fromCrowdId=3312&beginTheDate=201810{}&endTheDate=201810{}&toCrowdIdList[0]=3312&toCrowdIdList[1]=3313&toCrowdIdList[2]=3314&toCrowdIdList[3]=3315'
 
# 不校验证书
ssl._create_default_https_context = ssl._create_unverified_context
 
# 携带cookie进行访问
headers = {
'Host':'databank.yushanfang.com',
'Referer':'https://databank.yushanfang.com/',
'Connection':'keep-alive',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',
'Cookie':'_tb_token_=iNkDeJLdM3MgvKjhsfdW; bs_n_lang=zh_CN; cna=aaj1EViI7x0CATo9kTKvjzgS; ck2=072de851f1c02d5c7bac555f64c5c66d; c_token=c74594b486f8de731e2608cb9526a3f2; an=5YWo5qOJ5pe25Luj5a6Y5pa55peX6Iiw5bqXOnpmeA%3D%3D; lg=true; sg=\"=19\"; lvc=sAhojs49PcqHQQ%3D%3D; isg=BPT0Md7dE_ic5Ie3Oa85RxaMxbLK3UqJMMiN6o5VjH8C-ZRDtt7aRXb3fXGEAVAP',
}
 
rows = []
n = 20
while n <31:
  row = []
  row.append(n)
  
  m =21
  while m <32:
    
    if m < n + 1:
      row.append("")
    else:
      
      # 格式化请求地址,更换请求参数
      reqUrl = url.format(n, m)
      
      # 打印本次请求地址
      print(reqUrl)
      
      # 发送请求,获取响应结果
      request = urllib.request.Request(url=reqUrl, headers=headers)
      response = urllib.request.urlopen(request)
      text = response.read().decode('utf8')
      
      # 打印本次请求响应内容
      print(text)
      
      # 将响应内容转换为Json对象
      jsonobj = json.loads(text)
      
      # 从Json对象获取想要的内容
      toCntPercent = jsonobj['data']['interCrowdInfo'][1]['toCntPercent']
      
      # 生成行数据
      row.append(str(toCntPercent) + "%")
      
    m = m+1
    
  rows.append(row)    
  n = n+1
  
# 生成Excel表头
header = ['AI流转率', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
 
# 将表头数据和爬虫数据导出到Excel文件
with open('D:\\res\\pachong\\tmall.csv', 'w', encoding='gb18030') as f :
  f_csv = csv.writer(f)
  f_csv.writerow(header)
  f_csv.writerows(rows)

导出内容如下:

使用Python爬取Json数据的示例代码

到此这篇关于使用Python爬取Json数据的文章就介绍到这了,更多相关Python爬取Json数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python文件及目录操作实例详解
Jun 04 Python
Python中Class类用法实例分析
Nov 12 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
详解Django中六个常用的自定义装饰器
Jul 04 Python
对python for 文件指定行读写操作详解
Dec 29 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
python求质数列表的例子
Nov 24 Python
Python的in,is和id函数代码实例
Apr 18 Python
python反扒机制的5种解决方法
Feb 06 Python
如何利用python生成MD5并去重
Dec 07 #Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 #Python
python selenium 获取接口数据的实现
Dec 07 #Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 #Python
selenium判断元素是否存在的两种方法小结
Dec 07 #Python
pycharm实现猜数游戏
Dec 07 #Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 #Python
You might like
星际实力自我测试
2020/03/04 星际争霸
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
Javascript读取cookie函数代码
2010/10/16 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
jQuery Position方法使用和兼容性
2017/08/23 jQuery
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
python实现简单神经网络算法
2018/03/10 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
python实现logistic分类算法代码
2020/02/28 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
金士达面试非笔试
2012/03/14 面试题
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
护理专业优质毕业生自荐书
2014/01/31 职场文书
运动会解说词100字
2014/01/31 职场文书
寄语十八大感言
2014/02/07 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
python基础学习之递归函数知识总结
2021/05/26 Python
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript