使用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類型,其中紅框標(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)文章
4種Python基于字段的不使用元類的ORM實(shí)現(xiàn)方法總結(jié)
在 Python 中,ORM(Object-Relational Mapping)是一種將對(duì)象和數(shù)據(jù)庫(kù)之間的映射關(guān)系進(jìn)行轉(zhuǎn)換的技術(shù),本文為大家整理了4種不使用元類的簡(jiǎn)單ORM實(shí)現(xiàn)方式,需要的可以參考下2023-12-12python改變?nèi)罩?logging)存放位置的示例
示例主要解決的問(wèn)題是通過(guò)傳入日志文件參數(shù)的方式來(lái)改變?nèi)罩镜拇娣盼恢?需要的朋友可以參考下2014-03-03Python3爬蟲(chóng)中識(shí)別圖形驗(yàn)證碼的實(shí)例講解
在本篇內(nèi)容里小編給大家分享的是關(guān)于Python3爬蟲(chóng)中識(shí)別圖形驗(yàn)證碼的實(shí)例講解內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-07-07python框架中flask知識(shí)點(diǎn)總結(jié)
這篇文章給大家分享了關(guān)于學(xué)習(xí)python框架中flask知識(shí)點(diǎn)的總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2018-08-08Python for循環(huán)搭配else常見(jiàn)問(wèn)題解決
這篇文章主要介紹了Python for循環(huán)搭配else常見(jiàn)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Python3實(shí)現(xiàn)發(fā)送QQ郵件功能(附件)
這篇文章主要為大家詳細(xì)介紹了Python3實(shí)現(xiàn)發(fā)送QQ郵件功能,附件方面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12Python?SQLAlchemy之SQL工具包和ORM的用法詳解
SQLAlchemy?是?Python?中一款非常流行的數(shù)據(jù)庫(kù)工具包,它對(duì)底層的數(shù)據(jù)庫(kù)操作提供了高層次的抽象,在本篇文章中,我們將介紹SQLAlchemy的兩個(gè)主要組成部分:SQL工具包和對(duì)象關(guān)系映射器的基本使用,需要的朋友可以參考下2023-08-08python在ubuntu中的幾種安裝方法(小結(jié))
本篇文章主要介紹了python在ubuntu中的幾種安裝方法(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12python用ConfigObj讀寫(xiě)配置文件的實(shí)現(xiàn)代碼
發(fā)現(xiàn)一個(gè)簡(jiǎn)單而又強(qiáng)大的讀寫(xiě)配置文件的lib,個(gè)人覺(jué)得最大的亮點(diǎn)在于自帶的格式校驗(yàn)功能,并且支持復(fù)雜的嵌套格式,而且使用起來(lái)也相當(dāng)?shù)暮?jiǎn)便2013-03-03