使用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和C语言混合编程实例
Jun 04 Python
简述Python中的进程、线程、协程
Mar 18 Python
python爬虫_自动获取seebug的poc实例
Aug 05 Python
详解pyqt5 动画在QThread线程中无法运行问题
May 05 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
Java文件与类动手动脑实例详解
Nov 10 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
用Python制作音乐海报
Jan 26 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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/08 日漫
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
destoon之一键登录设置
2014/06/21 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
JS与C#编码解码
2013/12/03 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
使用Python构建Hopfield网络的教程
2015/04/14 Python
浅谈Python中的私有变量
2018/02/28 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
高分子材料与工程专业个人求职信
2013/12/15 职场文书
争论的故事教学反思
2014/02/06 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
起诉意见书范文
2015/05/19 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书