精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美激情四色| www亚洲视频| 国产乱码精品一区二区三区亚洲人| 国产女同互慰高潮91漫画| 国产精品www色诱视频| 天天爱天天操天天干| 成人精品一区| 国内精品自线一区二区三区视频| 九九精品视频在线| 久久久久9999| 久久久免费人体| 亚洲国产成人av网| 涩涩涩999| 亚洲国产精品久久久久久6q| 免播放器亚洲| 日韩网站免费观看高清| youjizz.com日本| 日韩高清成人| 亚洲国产精品久久久久秋霞影院| 日韩久久精品一区二区三区| 性一交一乱一色一视频麻豆| 日韩国产高清在线| 欧美国产精品va在线观看| 自拍偷拍中文字幕| 91精品福利观看| 欧美小视频在线| 亚洲欧美综合一区| 天堂成人在线观看| 在线精品视频在线观看高清| 日韩av在线导航| 亚洲国产综合av| jizz亚洲女人高潮大叫| 亚洲va国产天堂va久久en| 成人性生交大片免费看视频直播| 欧美三级韩国三级日本三斤在线观看| 久久精品不卡| 精品一区精品二区| 国内自拍偷拍视频| 国产精久久久| 欧美人妇做爰xxxⅹ性高电影| 日韩av片在线看| xxxx视频在线| 一区二区三区精品视频| 小说区视频区图片区| 成人综合影院| 久久久精品欧美丰满| 国产麻豆乱码精品一区二区三区 | 成人情趣视频网站| 亚洲国产精品va在线看黑人| 波多野结衣中文字幕在线播放| 成年网站在线| 99精品欧美一区二区三区小说| 99re在线国产| 亚洲黄色三级视频| 精久久久久久| 欧美激情一区二区久久久| 精品国产一区在线| 99精品在免费线中文字幕网站一区 | 日韩国产第一页| 色综合天天爱| 久久国内精品一国内精品| av免费播放网站| 成人高清电影网站| 尤物九九久久国产精品的分类| 熟女俱乐部一区二区| 久久91麻豆精品一区| 亚洲欧洲在线播放| 亚洲欧洲久久久| 欧美在线色图| 最近中文字幕2019免费| 国精品人伦一区二区三区蜜桃| 日韩国产一区二区三区| 日韩一区二区久久久| 久久嫩草捆绑紧缚| 亚洲高清影视| 日韩激情第一页| 欧美精品黑人猛交高潮| 精品大片一区二区| 日韩亚洲欧美中文高清在线| 波兰性xxxxx极品hd| 99成人超碰| 欧美美女18p| 丰满少妇乱子伦精品看片| 男人的天堂亚洲在线| 国产精品草莓在线免费观看| ,一级淫片a看免费| 国产一区欧美日韩| 国产精品美女久久久久av福利| 人人妻人人玩人人澡人人爽| 2014亚洲片线观看视频免费| 亚洲三区视频| 污的网站在线观看| 欧美午夜美女看片| 欧美国产日韩另类| 成人爽a毛片免费啪啪红桃视频| 亚洲精品mp4| 中文字幕在线观看日 | 亚洲伊人成综合成人网| 黄色成人一级片| 国产偷国产偷精品高清尤物| 中文字幕一区二区三区四区五区人| 日本无删减在线| 日本韩国一区二区| 色哟哟在线观看视频| 视频福利一区| 免费97视频在线精品国自产拍| 国产成人无码精品亚洲| 久久99精品久久久久| 狠狠色综合网站久久久久久久| av在线免费观看网站| 亚洲一区二区免费视频| 在线视频不卡一区二区三区| 波多野结依一区| 欧美日韩卡一卡二| 国产激情视频网站| 亚洲国产老妈| 国产精彩精品视频| 激情五月婷婷网| 国产精品一区二区免费不卡 | 色综合久久一区二区三区| 国外成人免费在线播放| 国产精品久久综合青草亚洲AV| 久久综合久久鬼色中文字| 日本一道在线观看| 一区二区三区伦理| 在线一区二区观看| 手机在线成人av| 欧美一区高清| 91美女片黄在线观| 国产中文在线视频| 亚洲18女电影在线观看| 天天操精品视频| 九九久久电影| 欧美一级黄色网| 99精品在线视频观看| 精品一区免费av| 免费一区二区三区在在线视频| 人成网站在线观看| xf在线a精品一区二区视频网站| 日本黄xxxxxxxxx100| av在线一区不卡| 亚洲国产精品成人av| 免费中文字幕在线| 免费美女久久99| 日韩免费电影一区二区| 91黄页在线观看| 亚洲综合丝袜美腿| 成人性生交免费看| 国产成人影院| 91禁国产网站| 精品人妻一区二区三区蜜桃| 亚洲欧洲av一区二区三区久久| 精品免费国产一区二区| 国产一区二区三区不卡av| 亚洲成在人线av| 成年人一级黄色片| 国产精品一国产精品k频道56| 精品一区在线播放| 操你啦在线视频| 91精品久久久久久久99蜜桃| 欧美视频亚洲图片| blacked蜜桃精品一区| 欧美在线一区二区三区四| 风流少妇一区二区三区91| 日韩一区日韩二区| 色婷婷综合网站| 91精品秘密在线观看| 成人精品福利视频| 老司机福利在线视频| 欧美片网站yy| 日本在线观看网址| 人人精品人人爱| 伊人婷婷久久| 亚洲一区av| 欧美成人免费视频| а√天堂资源在线| 天天操天天干天天综合网| 99久久久无码国产精品性波多 | 欧美成人aa大片| 国产午夜视频在线播放| 波多野结衣一区二区三区| 霍思燕三级露全乳照| 国产精品调教| 欧美在线视频导航| 成 人 黄 色 片 在线播放| 亚洲二区在线视频| 国产精品无码一区二区三区免费| 亚洲深夜av| 欧美精品七区| 福利一区和二区| 欧美黄色小视频| 亚州av在线播放| 日韩欧美一区二区三区久久| 丰满少妇一区二区| 日本少妇一区二区| 国产精品99久久久久久大便| 国产一区 二区| 久久久欧美精品| 99免在线观看免费视频高清| 69精品人人人人| 国产在线免费视频| 久久久电影一区二区三区| 9久久婷婷国产综合精品性色| 免费一区二区| 国产精品久久亚洲7777| 国产精品av一区二区三区| 欧美日韩一区二区三区高清| www成人啪啪18软件| 国产成人精品免费在线| 97在线国产视频| 成人看的视频| 成人资源av| www成人在线视频| 欧美成人性生活| 亚洲av电影一区| 欧美一级黄色录像| 精品人妻无码一区二区性色| 亚洲欧洲日韩女同| 香蕉视频黄色在线观看| 国产成人精品一区二| 日日碰狠狠丁香久燥| 这里只有精品在线| 欧美日本韩国国产| 国产精品国产亚洲精品| 国产精品久久久久影院日本| 免费在线国产视频| 在线日韩日本国产亚洲| 性做久久久久久久久久| 欧美性猛交xxxx黑人交| 日韩手机在线视频| 樱花影视一区二区| av永久免费观看| 波多野结衣亚洲一区| 免费成人黄色大片| 精品亚洲成a人在线观看| 中国丰满人妻videoshd| 欧美久久综合| 91社在线播放| 久久99视频| 欧美日韩亚洲综合一区二区三区激情在线 | 欧美精品电影在线播放| 天天射天天干天天| 亚洲一区电影777| 久久爱一区二区| 欧美韩国一区二区| 精品欧美一区二区久久久| 91免费国产在线| 国产chinese中国hdxxxx| 国产精品一区三区| 亚洲午夜激情影院| 国产一区免费电影| 蜜桃福利午夜精品一区| 日韩中文字幕麻豆| 任你操这里只有精品| 在线免费观看欧美| 精品久久一二三| 在线日本成人| 欧美亚洲黄色片| 欧美视频四区| 九九爱精品视频| 激情欧美国产欧美| 亚洲人成无码网站久久99热国产| 欧美在线网站| 一区精品在线| 午夜精品一区二区三区国产| 欧洲xxxxx| 日韩一级淫片| 91亚洲精品一区| 男人亚洲天堂| 99久久免费国| 国产欧美三级电影| 国产一区二区不卡视频| 久久久免费毛片| 日韩欧美一区二区视频在线播放| 国产伦精品一区二区三区视频| 欧洲精品在线一区| 欧美少妇性xxxx| 亚洲精品乱码视频| 伊人成综合网| 国产九色porny| 欧美亚洲专区| 国产精品久久久久9999小说| 久久爱www久久做| 日本黄色一级网站| 成人美女在线观看| 国产视频一区二区视频| 日韩av一区二| 国产成人精品综合久久久久99| 国产福利精品导航| 好男人香蕉影院| 久久日韩粉嫩一区二区三区| 国产成人av免费在线观看| 亚洲欧美精品午睡沙发| 国产无码精品视频| 日本精品一级二级| 国产永久免费视频| 精品日韩在线一区| 天天干天天插天天操| 中文字幕久热精品在线视频| jizz性欧美10| 2019亚洲日韩新视频| 88xx成人网| 国产综合动作在线观看| 精品毛片免费观看| 8x8x华人在线| 午夜亚洲影视| 国内自拍偷拍视频| 国产三级精品视频| www.超碰在线观看| 日韩欧美亚洲成人| 日本视频网站在线观看| 日韩一区二区三区高清免费看看| 天堂在线资源8| 日韩中文字幕av| bl在线肉h视频大尺度| 国产免费成人av| 精品日本视频| 国产精品初高中精品久久| 欧美精品一区二区三区中文字幕| 日韩视频免费播放| 久久电影国产免费久久电影| 国产伦精品一区二区三区精品| 亚洲国产精品成人综合 | 色悠悠久久综合网| 国产99精品视频| 国产综合精品久久久久成人av| 亚洲综合色区另类av| 一区二区三区日| 亚洲视频国产视频| segui88久久综合| 国产有码一区二区| 91欧美大片| 老熟妇仑乱视频一区二区| 国产成都精品91一区二区三 | 国产精品麻豆视频| 日本天堂网在线| 日韩欧美不卡一区| 亚洲搞黄视频| 国产免费观看久久黄| 免费看日本一区二区| 僵尸世界大战2 在线播放| 精品一区二区三区蜜桃| 久草福利资源在线| 欧美在线短视频| 青青国产在线| 国产不卡av在线| 色婷婷av一区二区三区丝袜美腿| 日韩欧美视频免费在线观看| 精品一区二区免费视频| 成年人免费视频播放| 在线视频综合导航| 日本高清中文字幕二区在线| 性色av一区二区三区在线观看| 国内精品免费| 日本手机在线视频| 国产成人亚洲精品青草天美| 国产精品视频一区二区三| 91麻豆精品国产91久久久更新时间| 成人激情电影在线看| 国产成人涩涩涩视频在线观看| 女仆av观看一区| 免费观看精品视频| 91麻豆免费在线观看| 中国一级免费毛片| 亚洲成人网在线观看| 欧美videos另类精品| 91精品在线观| 欧美在线三级| 中文字幕在线观看网址| 精品日本美女福利在线观看| 天堂av在线7| 97视频在线观看视频免费视频 | 日韩免费在线| 蜜臀一区二区三区精品免费视频| 国产精品嫩草影院com| 一级黄色片网站| 欧美精品video| 欧美日韩导航| 久久久久久香蕉| 国产欧美日韩激情| 国产黄色美女视频| 久久免费视频在线| 少妇一区二区三区| 欧美 激情 在线| 中文字幕不卡在线播放| 亚洲一区二区三区高清视频| 久久伊人色综合| 另类春色校园亚洲| 国产天堂在线播放| 中文字幕综合网| 涩涩视频免费看| 国产91精品在线播放| 女优一区二区三区| 免费看黄色一级大片| 亚洲人成精品久久久久| 性猛交xxxx| 国产精品欧美激情| 伊人蜜桃色噜噜激情综合| 精品无码人妻一区| 欧美男人的天堂一二区|