快速入門網絡爬蟲系列 Chapter09 | JSON數據處理

      網友投稿 636 2022-05-30

      Chapter09 | JSON數據處理

      一、JSON

      1、獲取JSON響應

      2、解析JSON

      2.1、解碼JSON的功能

      2.2、從dict中還原為JSON對象

      二、API

      1、第一種

      2、第二種

      3、代碼實現

      4、測試

      一、JSON

      JSON是指JavaScript對象表示法(JavaScript Object Notation):

      獨立于語言和平臺

      與XML類似,存儲和交換文本信息

      與XML語言更快、更易解析

      JSON的主要表達形式:

      單個JSON對象,書寫格式為{string:value,string:value}

      1、獲取JSON響應

      通過網絡庫requests,網絡爬蟲獲取響應,并使用JSON格式展示數據

      import requests import urllib url = 'http://httpbin.org/get' response = requests.get(url,timeout = 5) print(response.text)

      1

      2

      3

      4

      5

      6

      2、解析JSON

      2.1、解碼JSON的功能

      Python的json庫可以提供編碼,解碼JSON的功能

      json庫的主要函數有:

      json.loads():JSON字符串轉換成Python

      json.load():文件中JSON字符串轉換為Python

      json.dumps():Python對象序列化為JSON對象

      json.dump():Python對象序列化為JSON對象,并寫入文件

      把網絡爬蟲獲取的響應轉換成Python對象:

      import json json_data = json.loads(response.text) print(type(json_data)) print(json_data)

      1

      2

      3

      4

      import requests from bs4 import BeautifulSoup as bs s=requests.session() s.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'} page=s.get('https://api.github.com/events') data = page.json() print(type(data)) print(type(data[0])) print(data[0])

      1

      2

      3

      4

      5

      快速入門網絡爬蟲系列 Chapter09 | JSON數據處理

      6

      7

      8

      9

      2.2、從dict中還原為JSON對象

      Json庫還可以從dict中還原為JSON對象,在Python中為字符串類型

      back_json = json.dumps(json_data) print(type(back_json)) print(back_json)

      1

      2

      3

      二、API

      應用編程接口(Application Programming Interface,API)

      API不同的應用提供方便友好的接口

      開發者用不同的語言結構編寫程序,通過API獲取數據,實現不同程序間的信息共享

      API在網絡爬蟲中的使用場景:

      API并不隨處可見,但可以請求接收請求,并向客戶端返回響應的信息

      與網站不同的是,API必須:

      擁有嚴謹的語言規則,標準的規范來產生數據

      使用XML或者JSON格式來展示數據,而不是HTML表示

      下面以新浪微博為例:

      由上圖我們可以看到數據,但是這些數據不是我們想要看到的,這是因為我們并沒有轉碼。

      下面我們通過兩種方式打開來驗證下內容:

      1、第一種

      直接點擊get

      結果如下:

      2、第二種

      復制Request URL的鏈接打開

      結果如下:

      經過對比,我們發現結果是一樣的。

      3、代碼實現

      下面在代碼實現下:

      import requests from bs4 import BeautifulSoup as bs s=requests.session() s.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'} page=s.get('https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8&callback=feedCardJsonpCallback&_=1585719783848') print(page.content)

      1

      2

      3

      4

      5

      6

      上述代碼遍獲取到了所需要解析的文件,下面就需要進行解析了:

      import requests import json from bs4 import BeautifulSoup as bs s=requests.session() s.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'} page=s.get('https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8') print((json.loads(page.content.decode("utf-8"))))

      1

      2

      3

      4

      5

      6

      7

      這樣就轉換成dict類型的數據,供我們提取

      4、測試

      取出網址:

      import requests import json from bs4 import BeautifulSoup as bs s=requests.session() s.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'} page=s.get('https://feed.sina.com.cn/api/roll/get?pageid=121&lid=1356&num=20&versionNumber=1.2.4&page=2&encode=utf-8') news = json.loads(page.content.decode("utf-8")).get('result').get("data") for new in news: print(new.get("url"))

      1

      2

      3

      4

      5

      6

      7

      8

      9

      JSON 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Java基礎之修飾符
      下一篇:OOP面向對象關系剖析
      相關文章
      亚洲国产综合AV在线观看| 国产91在线|亚洲| 亚洲爆乳无码专区www| 亚洲欧洲尹人香蕉综合| 久久久久亚洲AV片无码| 亚洲高清国产拍精品26U| 亚洲精品美女久久777777| 中文字幕专区在线亚洲| 亚洲一级特黄大片无码毛片| 亚洲国产精品尤物yw在线| 亚洲不卡AV影片在线播放| yy6080久久亚洲精品| 国产成人毛片亚洲精品| 亚洲区不卡顿区在线观看| 亚洲日本一区二区一本一道| 国产精品亚洲玖玖玖在线观看| avtt亚洲天堂| 亚洲色偷拍区另类无码专区| 亚洲中文字幕丝袜制服一区| 亚洲色www永久网站| 亚洲a∨国产av综合av下载| 日本亚洲高清乱码中文在线观看| 亚洲第一se情网站| 亚洲国产成人乱码精品女人久久久不卡 | 国产亚洲精久久久久久无码AV| 亚洲国产精品成人AV无码久久综合影院| 亚洲av永久无码| 婷婷亚洲综合一区二区 | 久久精品亚洲视频| 亚洲成a人片77777老司机| 亚洲AV无码久久寂寞少妇| 亚洲成a人片77777老司机| 久久综合亚洲色HEZYO社区| 亚洲国产日韩在线人成下载 | 亚洲精品tv久久久久久久久久| 亚洲日本中文字幕天堂网| 亚洲va久久久噜噜噜久久男同| 亚洲国产成人私人影院| 亚洲性69影院在线观看| 亚洲日产乱码一二三区别| 亚洲国产aⅴ综合网|