使用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回溯法实现数组全排列输出实例分析
Mar 17 Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 Python
Python操作Excel之xlsx文件
Mar 24 Python
python方向键控制上下左右代码
Jan 20 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
使用Python实现租车计费系统的两种方法
Sep 29 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
Jul 15 Python
numpy求平均值的维度设定的例子
Aug 24 Python
Python面向对象原理与基础语法详解
Jan 02 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
tensorboard显示空白的解决
Feb 15 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
php对大文件进行读取操作的实现代码
2013/01/23 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
js 字符串操作函数
2009/07/25 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
Python实现高效求解素数代码实例
2015/06/30 Python
python函数形参用法实例分析
2015/08/04 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
python实现发送邮件功能代码
2017/12/14 Python
python实现内存监控系统
2021/03/07 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
python 导入数据及作图的实现
2019/12/03 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Python jieba库分词模式实例用法
2021/01/13 Python
python lambda的使用详解
2021/02/26 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
学习党代会心得体会
2014/09/05 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python