精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何快速從深層嵌套 JSON 中找到特定的 Key

開發 前端
在爬蟲開發的過程中,我們經常遇到一些 Ajax 加載的接口會返回 JSON 數據。

[[376428]]

在爬蟲開發的過程中,我們經常遇到一些 Ajax 加載的接口會返回 JSON 數據。如下圖所示,是 Twitter 的用戶時間線接口,返回了一段3000多行的深層嵌套 JSON:

其中的cursor這個字段,是請求下一頁的必要字段,我必須把它的 value 值讀取出來,拼接到請求 URL 中,才能請求下一頁的內容。

現在問題來了,cursor字段在這個 JSON 里面的哪個位置?從最外層開始,我應該怎么樣才能讀取到最里面的這個cursor中的value字段的值?

我知道已經有一些第三方庫可以直接根據字段名讀取 JSON 內部任意深度的值,不過用別人的東西總沒有自己寫一個輪子來得過癮。所以今天我們自己來手寫一個模塊,我把他叫做JsonPathFinder,傳入一個 JSON 字符串和需要讀取的字段名,返回從最外層開始直到這個字段的路徑。

效果演示

我們用 Python 之父龜叔的 Twitter 時間線來作為演示,運行以后,效果如下圖所示:

可以看到,從最外層開始一路讀到cursor字段,需要經過非常多的字段名,對應到 JSON 中,如下圖所示:

由于entries 字段列表中一共有20個元素,所以這里的18、19實際上對應了倒數第二條和倒數第一條數據。其中,倒數第二條的 cursor 對應的是本頁第一條推文,而倒數第一條對應的是本頁最后一條推文。所以當我們要往后翻頁的時候,應該用的是倒數第一條的 cursor。

我們試著來讀取一下結果:

非常輕松地獲取到了數據。不需要再肉眼在 JSON 中尋找字段了。

原理分析

JsonPathFinder 的原理并不復雜,全部代碼加上空行,一共只有32行,如下圖所示:

因為一個字段在 JSON 中可能出現很多次,所以find_one方法返回從外層到目標字段的第一條路徑。而find_all方法返回從外層到目標字段的所有路徑。

而核心算法,就是iter_node方法。在把 JSON 字符串轉成 Python 的字典或者列表以后,這個方法使用深度優先遍歷整個數據,記錄它走過的每一個字段,如果遇到列表就把列表的索引作為 Key。直到遍歷到目標字段,或者某個字段的值不是列表也不是字典時結束本條路徑,繼續遍歷下個節點。

代碼第10-15行,分別對列表和字典進行處理。對于字典來說,我們分離 key 和 value,寫作:

  1. for key, value in xxx.items(): 
  2.    ... 

對于列表,我們分離索引和元素,寫作:

  1. for index, element in enumerate(xxx): 
  2.    ... 

所以如在第11和第13行,使用生成器推導式分別處理字典和列表,這樣得到的key_value_iter生成器對象,就可以在第16行被相同的 for 循環迭代。

我們知道,在 Python 里面可以迭代的對象除了字典和列表以外,還有很多其他的對象,不過我這里只處理了字典和列表。大家也可以試一試修改10-15行的條件判斷,增加對其他可迭代對象的處理邏輯。

代碼第16-22行,對處理以后的 key-value 進行迭代。首先記錄到當前字段為止的迭代路徑到current_path列表中。然后判斷當前字段是不是目標字段。如果是,那么把當前的路徑通過 yield 拋出來。如果當前路徑的值是列表或者字典,那么把這個值遞歸傳入 iter_node 方法,進一步檢查內部還有沒有目標字段。需要注意的是,無論當前字段是不是目標字段,只要它的值是列表或者字典,都需要繼續迭代。因為即使當前字段的名字是目標字段,但也許它內部還有某個子孫字段的字段名也是目標字段名。

對于普通函數來說,要遞歸調用,直接return 當前函數(參數)就可以了。但是對于生成器來說,要遞歸調用,就需要使用yield from 當前函數名(參數)。

由于iter_node方法返回的是一個生成器對象,在 find_one和find_all方法中,for 循環每一次迭代,都能拿到一條從20行拋出來的到目標字段的路徑。而在find_one方法中,當我們拿到第一條路徑時,不再繼續迭代,那么就可以節省大量的時間,減少迭代次數。

正確使用

有了這個工具以后,我們可以直接用它來解析數據,也可以用來輔助分析數據。例如,Twitter 時間線的正文是在full_text中,我可以直接用 JsonPathFinder 獲取所有的正文:

但有時候,我們除了獲取正文外,還需要每一條推文的其他信息,如下圖所示:

可以看到, 這種情況下,我們可以先獲取從外層到full_text的路徑列表,然后再人工對列表進行一些加工,輔助開發:

從打印出來的路徑列表里面可以看到,我們只需要獲取globalObjects->tweets就可以了。它的值是20個字典,每個字典的 Key 是推文的 ID,Value 是推文的詳情。這個時候,我們再人工去修改一下代碼,也能方便地提取一條推文的全部字段。

 

責任編輯:趙寧寧 來源: 未聞Code
相關推薦

2020-10-12 11:16:32

數組特定值元素

2018-05-28 11:10:08

Linux命令IP地址

2014-06-06 10:01:21

百度

2018-10-17 09:20:31

Linux命令重復文件

2020-04-08 10:42:14

多云云計算云開發

2021-03-21 07:23:18

微軟MSERT工具現web shell

2022-05-27 11:59:22

Linux內存CPU

2009-08-10 19:30:09

運維知識庫IT運維管理廣通信達科技

2017-02-17 09:14:14

Hadoop

2023-09-04 10:10:47

插件頁面元素

2022-12-12 11:14:06

LinuxID

2020-03-31 17:05:39

Redis熱 key代理

2025-02-13 08:00:00

AI罕見病患者人工智能

2023-04-24 13:37:04

Unity游戲開發

2021-02-03 10:43:54

Linux系統磁盤

2022-07-06 23:34:00

LinuxIP

2021-11-06 23:19:39

Python電腦文件

2022-10-25 07:32:02

2013-07-25 09:34:13

微軟云平臺Windows Azu

2019-11-20 10:24:43

Linux重復文件磁盤
點贊
收藏

51CTO技術棧公眾號

aaa级精品久久久国产片| 日韩在线视频国产| 国产免费视频传媒| 成人短视频在线观看| 成人午夜视频在线| 国产黑人绿帽在线第一区| 国产精品国产精品88| 五月综合久久| 日韩午夜三级在线| 丝袜制服一区二区三区| 日本色护士高潮视频在线观看 | 在线亚洲伦理| 色噜噜国产精品视频一区二区| xxxxwww一片| 欧美成人精品三级网站| 亚洲综合av网| 亚洲激情电影在线| 亚洲av成人无码久久精品老人 | av在线一区不卡| 亚洲国产日韩一级| 亚洲自拍偷拍一区二区三区| 男女污污视频在线观看| 成人中文字幕合集| 成人在线一区二区| 日本免费精品视频| 99香蕉国产精品偷在线观看 | 亚洲第一色在线| 亚洲日本黄色片| 成人性生交大片免费观看网站| 夜色激情一区二区| 国产又粗又爽又黄的视频| www.久久热.com| 久久综合久久99| 国产伦精品一区二区三| 国产av一区二区三区| 免费人成网站在线观看欧美高清| 51久久精品夜色国产麻豆| 久久黄色免费视频| 欧美不卡一区| 不卡av在线网站| 强制高潮抽搐sm调教高h| 欧美老女人另类| 亚洲最新av网址| 好吊日免费视频| 日本午夜精品久久久| 亚洲国产小视频| 在线视频 日韩| 欧美黄色录像| 亚洲精品天天看| 欧美一区二区三区成人精品| 台湾色综合娱乐中文网| 亚洲福利小视频| a级一a一级在线观看| 超碰97久久国产精品牛牛| 欧美成人免费网站| 韩国黄色一级片| 国产调教精品| 亚洲国产日韩精品在线| 久久人妻少妇嫩草av无码专区 | 亚洲一区二区在| 91女主播在线观看| 国产精品高清亚洲| 中文字幕久久综合| 呦呦在线视频| 调教+趴+乳夹+国产+精品| 欧美一区二区三区爽大粗免费| 校园春色亚洲| 91国内精品野花午夜精品| 成人精品小视频| 成人亚洲免费| 欧美大片在线观看一区| 这里只有精品在线观看视频| 西瓜成人精品人成网站| 中日韩美女免费视频网站在线观看| 极品蜜桃臀肥臀-x88av| 91成人国产| 久久久久在线观看| 国产精品久久久久久久久久精爆| 美女视频免费一区| 亚洲综合在线中文字幕| 手机福利在线| 中文字幕亚洲在| 欧美在线观看视频免费| 日本蜜桃在线观看视频| 欧美日韩精品系列| 久久人妻少妇嫩草av蜜桃| 少妇精品导航| 美女视频久久黄| 中文字幕一区二区三区精品| 另类小说一区二区三区| 成人欧美一区二区| 国产女主播在线写真| 亚洲精品日韩综合观看成人91| 国产伦精品一区二区三区四区视频_| 日韩性xxx| 欧美一区二区高清| 中文字幕在线观看的网站| 久久在线视频| 91国产美女在线观看| 在线观看免费视频一区| 成人性色生活片免费看爆迷你毛片| 欧美久久综合性欧美| 日韩精品毛片| 天天操天天综合网| 日韩高清在线一区二区| 国产影视一区| 久久久久久久久综合| 中文字幕第2页| thepron国产精品| 中文网丁香综合网| 深夜成人影院| 亚洲国产中文字幕在线观看| 伊人久久久久久久久久久久久久| 亚洲视频1区| 91青青草免费观看| 午夜在线视频| 日本韩国欧美在线| 日韩Av无码精品| 亚洲国产成人精品女人| 国产精品久久久久一区二区| 婷婷在线免费视频| 亚洲女厕所小便bbb| 爆乳熟妇一区二区三区霸乳| 久久综合社区| 欧美精品久久久久久久| 91麻豆成人精品国产| 国产日韩av一区| a√天堂在线观看| 国产ts一区| 欧美国产第一页| 国产成人精品a视频| 国产精品久久久一本精品 | 国产美女精品人人做人人爽| 日本不卡在线观看| 日韩电影毛片| 日韩av有码在线| 日韩伦人妻无码| 成人深夜视频在线观看| 成年人深夜视频| 亚洲日本va中文字幕| 久久国产精品久久久| 国产精品亚洲lv粉色| 国产精品电影院| 国产精品视频中文字幕| 日本一区二区三区视频| 国产精选久久久久久| 成年网站在线| 欧美色国产精品| 任我爽在线视频| 久久精品国产99| 四虎影院一区二区| 老司机亚洲精品一区二区| 欧美成人在线影院| 亚洲av无码片一区二区三区| 亚洲视频免费在线| 一级全黄裸体片| 亚洲无线视频| 精品乱子伦一区二区三区| 川上优av中文字幕一区二区| 亚洲精品一区二区三区99| 国产一级中文字幕| 99久久婷婷国产| www.国产区| 91久久夜色精品国产按摩| 91日本在线视频| 国产乱码在线| 亚洲欧美福利视频| 一区二区自拍偷拍| 亚洲欧美激情插| 制服丝袜av在线| 美女久久一区| 爱爱爱视频网站| 99re热精品视频| 欧洲中文字幕国产精品| 成人在线免费视频| 欧美一级专区免费大片| 国产精品久久久免费视频| 国产免费久久精品| 能看毛片的网站| 国产视频一区欧美| 亚洲一区不卡在线| 亚洲精品一区在线| 国产不卡av在线| 国产精品久久久久久福利| 亚洲国产精品电影| 亚洲视频一区在线播放| 亚洲福利国产精品| 91禁男男在线观看| 成人免费的视频| 永久免费的av网站| 亚洲一区国产| 国产又爽又黄ai换脸| 台湾亚洲精品一区二区tv| 91九色单男在线观看| 日韩伦理福利| 欧美乱人伦中文字幕在线| 欧美精品少妇| 精品国产一区二区精华| 在线观看av大片| 亚洲午夜精品久久久久久久久| 91激情视频在线观看| 成人av中文字幕| 欧美国产日韩另类| 欧美一级一区| 青草视频在线观看视频| 色综合五月天| 欧美一区免费视频| 久久丝袜视频| dy888夜精品国产专区| 国产成人免费精品| 欧美尤物巨大精品爽| 亚洲奶水xxxx哺乳期| 中文字幕日本欧美| 国产一二在线观看| 亚洲精品99久久久久| a天堂中文在线观看| 欧美性淫爽ww久久久久无| 日韩特黄一级片| 亚洲最大色网站| 免费在线观看黄色小视频| 久久午夜羞羞影院免费观看| 亚洲精品国产成人av在线| 国产一区二区影院| 亚洲一区二区三区观看| 日韩电影在线观看电影| 免费国产a级片| 在线国产精品一区| 91精品国产毛片武则天| 性xxxx欧美老肥妇牲乱| 亚洲精品tv久久久久久久久| 精品成人影院| 欧美最大成人综合网| 香蕉久久夜色精品国产更新时间| 国产69精品久久久久9999apgf| 成人免费91| 91精品久久久久久久久久另类 | 亚洲欧美日韩另类精品一区二区三区 | 国产剧情在线| 久久精品成人欧美大片| 久久亚洲天堂| 美女扒开尿口让男人操亚洲视频网站| 婷婷成人激情| 日日噜噜噜夜夜爽亚洲精品| 在线观看av的网站| 精品久久久999| 欧美激情免费| 欧美成人精品三级在线观看 | 欧美日韩中文一区二区| 午夜一区二区三视频在线观看| 狠狠综合久久av一区二区蜜桃| 欧美性色黄大片人与善| 精品大片一区二区| 一区二区三区四区| 久久久五月天| 黄网站色视频免费观看| 亚洲黄页一区| 国产精品97在线| 日韩国产高清在线| 亚洲涩涩在线观看| 国产成人av影院| 波多野结衣影院| 久久久不卡网国产精品二区| avhd101老司机| 亚洲欧美电影院| 日韩av在线播| 91九色最新地址| 国产精品爽爽久久久久久| 日韩午夜三级在线| 天堂网在线播放| 亚洲一区二区精品| 国产视频中文字幕在线观看| 欧美成人午夜视频| 黄色漫画在线免费看| 国产精品激情av在线播放| av成人在线网站| 精品一区日韩成人| 久久网站免费观看| 99在线免费视频观看| 日日夜夜一区二区| 精产国品一二三区| 91小视频免费看| 久久久久久久麻豆| 亚洲6080在线| 国产精品久久久久久久久久久久久久久久 | 欧美综合国产精品久久丁香| 人人精品久久| 精品国产福利| 97精品国产福利一区二区三区| 国产91沈先生在线播放| 日韩电影在线一区二区| 欧洲成人午夜精品无码区久久| 久久久一区二区三区| 久久免费看少妇高潮v片特黄| 欧美日韩免费在线观看| 91在线视频国产| 国产午夜精品理论片a级探花| 国产三区在线观看| 国产97在线视频| 91精品国产乱码久久久竹菊| 午夜精品电影在线观看| 亚洲激情视频| 亚洲一二三不卡| 国产午夜精品在线观看| www.youjizz.com亚洲| 欧美日韩情趣电影| 日本亚洲欧美| 久久久久久久91| 中文成人在线| 日韩欧美99| 香蕉久久a毛片| 黑人玩弄人妻一区二区三区| 国产精品二区一区二区aⅴ污介绍| 日韩特级黄色片| 亚洲精品一区二区三区影院| 含羞草www国产在线视频| 国产精品高精视频免费| 欧美尿孔扩张虐视频| 国产 欧美 日本| 狠狠色狠狠色综合日日91app| 一区二区三区免费在线观看视频| 亚洲一区二区三区四区在线| 国产视频第一页| 色偷偷噜噜噜亚洲男人| 久久久成人av毛片免费观看| 蜜桃麻豆91| 国产精品老牛| av网站有哪些| 午夜精品国产更新| 日本韩国免费观看| 久久久亚洲国产| 试看120秒一区二区三区| 中文字幕第50页| 黑人巨大精品欧美黑白配亚洲| 国产综合精品在线| 一本一本久久a久久精品综合麻豆| 污污视频在线观看网站| 国内精品中文字幕| 国产一区丝袜| 久久99中文字幕| 成人av免费在线| 日本一区二区网站| 日韩风俗一区 二区| 密臀av在线播放| 欧美二区在线看| 巨乳诱惑日韩免费av| 国精产品一区二区三区| 在线免费不卡视频| 香蕉视频在线看| 91精品在线播放| 韩国自拍一区| 国产污在线观看| 狠狠躁夜夜躁人人躁婷婷91| 神马电影在线观看| 国产成人精品免高潮在线观看| av中字幕久久| 午夜啪啪小视频| 亚洲自拍另类综合| 五月色婷婷综合| 4438全国亚洲精品在线观看视频| 宅男在线一区| 日本三级黄色网址| 一区二区三区高清| 欧美自拍偷拍第一页| 青青久久av北条麻妃海外网| 国产影视一区| 久久久九九九热| 亚洲高清在线视频| 欧美男男同志| 国产在线精品自拍| 欧美精品三级| 女尊高h男高潮呻吟| 欧美人伦禁忌dvd放荡欲情| 三级网站视频在在线播放| 九色视频成人porny| 日本不卡123| 麻豆视频在线观看| 亚洲精品一区二区久| 日韩黄色三级| www.av蜜桃| 国产视频一区二区在线| 国产又粗又大又黄| 3344国产精品免费看| 99久久99视频只有精品| 欧美熟妇精品一区二区蜜桃视频| 欧美综合天天夜夜久久| 在线黄色网页| 欧美日韩精品久久| 国产一区二区美女| 女人十八岁毛片| 久久精品国产免费观看| 欧美人体视频| www激情五月| 色噜噜狠狠成人中文综合| 国产高清一区二区三区视频| 蜜桃传媒视频第一区入口在线看| 九九久久精品视频| 中文字幕av影院| 久久免费国产视频| 婷婷综合五月| 久操视频免费看|