使用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实现的文件夹清理程序分享
Nov 22 Python
Python列表(list)常用操作方法小结
Feb 02 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
python初学之用户登录的实现过程(实例讲解)
Dec 23 Python
python计算两个数的百分比方法
Jun 29 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 Python
python中数据库like模糊查询方式
Mar 02 Python
Python requests模块cookie实例解析
Apr 14 Python
Django实现任意文件上传(最简单的方法)
Jun 03 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 Python
基于Python实现股票收益率分析
Apr 02 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+SqlServer实现分页显示
2006/10/09 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
WordPress网站性能优化指南
2015/11/18 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
ext jquery 简单比较
2010/04/07 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
python中管道用法入门实例
2015/06/04 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
详解python开发环境搭建
2016/12/16 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
统计岗位职责
2014/02/21 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
手机被没收的检讨书
2014/10/04 职场文书
永不妥协观后感
2015/06/10 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
vue实现在data里引入相对路径
2022/06/05 Vue.js