使用Python爬取Json數(shù)據(jù)的示例代碼
一年一度的雙十一即將來(lái)臨,臨時(shí)接到了一個(gè)任務(wù):統(tǒng)計(jì)某品牌數(shù)據(jù)銀行中自己品牌分別在2017和2018的10月20日至10月31日之間不同時(shí)間段的AIPL(“認(rèn)知”(Aware)、“興趣”(Interest)、“購(gòu)買(mǎi)”(Purchase)、“忠誠(chéng)”(Loyalty))流轉(zhuǎn)率。
使用Fiddler獲取到目標(biāo)地址為:
本文中以爬取其中的AI流轉(zhuǎn)率數(shù)據(jù)為例。
該地址返回的響應(yīng)內(nèi)容為Json類(lèi)型,其中紅框標(biāo)記的項(xiàng)即為AI流轉(zhuǎn)率值:

實(shí)現(xiàn)代碼如下:
import requests
import json
import csv
# 爬蟲(chóng)地址
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進(jìn)行訪問(wèn)
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:
# 格式化請(qǐng)求地址,更換請(qǐng)求參數(shù)
reqUrl = url.format(n, m)
# 打印本次請(qǐng)求地址
print(url)
# 發(fā)送請(qǐng)求,獲取響應(yīng)結(jié)果
response = requests.get(url=reqUrl, headers=headers, verify=False)
text = response.text
# 打印本次請(qǐng)求響應(yīng)內(nèi)容
print(text)
# 將響應(yīng)內(nèi)容轉(zhuǎn)換為Json對(duì)象
jsonobj = json.loads(text)
# 從Json對(duì)象獲取想要的內(nèi)容
toCntPercent = jsonobj['data']['interCrowdInfo'][1]['toCntPercent']
# 生成行數(shù)據(jù)
row.append(str(toCntPercent)+"%")
# 保存行數(shù)據(jù)
rows.append(row)
# 生成Excel表頭
header = ['AI流轉(zhuǎn)率', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
# 將表頭數(shù)據(jù)和爬蟲(chóng)數(shù)據(jù)導(dǎo)出到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
# 爬蟲(chóng)地址
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'
# 不校驗(yàn)證書(shū)
ssl._create_default_https_context = ssl._create_unverified_context
# 攜帶cookie進(jìn)行訪問(wèn)
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:
# 格式化請(qǐng)求地址,更換請(qǐng)求參數(shù)
reqUrl = url.format(n, m)
# 打印本次請(qǐng)求地址
print(reqUrl)
# 發(fā)送請(qǐng)求,獲取響應(yīng)結(jié)果
request = urllib.request.Request(url=reqUrl, headers=headers)
response = urllib.request.urlopen(request)
text = response.read().decode('utf8')
# 打印本次請(qǐng)求響應(yīng)內(nèi)容
print(text)
# 將響應(yīng)內(nèi)容轉(zhuǎn)換為Json對(duì)象
jsonobj = json.loads(text)
# 從Json對(duì)象獲取想要的內(nèi)容
toCntPercent = jsonobj['data']['interCrowdInfo'][1]['toCntPercent']
# 生成行數(shù)據(jù)
row.append(str(toCntPercent) + "%")
m = m+1
rows.append(row)
n = n+1
# 生成Excel表頭
header = ['AI流轉(zhuǎn)率', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31']
# 將表頭數(shù)據(jù)和爬蟲(chóng)數(shù)據(jù)導(dǎo)出到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)
導(dǎo)出內(nèi)容如下:

到此這篇關(guān)于使用Python爬取Json數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python爬取Json數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python導(dǎo)入txt數(shù)據(jù)到mysql的方法
這篇文章主要介紹了Python導(dǎo)入txt數(shù)據(jù)到mysql的方法,涉及Python操作txt文件及mysql數(shù)據(jù)庫(kù)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
python動(dòng)態(tài)視頻下載器的實(shí)現(xiàn)方法
這里向大家分享一下python爬蟲(chóng)的一些應(yīng)用,主要是用爬蟲(chóng)配合簡(jiǎn)單的GUI界面實(shí)現(xiàn)視頻,音樂(lè)和小說(shuō)的下載器。今天就先介紹如何實(shí)現(xiàn)一個(gè)動(dòng)態(tài)視頻下載器,需要的朋友可以參考下2019-09-09
Python爬蟲(chóng)回測(cè)股票的實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于Python爬蟲(chóng)回測(cè)股票的實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01
python中的對(duì)數(shù)log函數(shù)表示及用法
在本篇文章里小編給大家整理了一篇關(guān)于python中的對(duì)數(shù)log函數(shù)表示及用法,有需要的朋友們可以學(xué)習(xí)下。2020-12-12
Python中的數(shù)據(jù)類(lèi)dataclass解讀
這篇文章主要介紹了Python中的數(shù)據(jù)類(lèi)dataclass使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

