
JSON和JSONPath
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,它使得人們很容易的進行閱讀和撰寫,同時也方便了機器進行決議和生成,適用于進行資料互動的場景,比如網站前臺與后臺之間的資料互動,
注意:光理論是不夠的,這里順便免費送大家一套2020最新python入門到高級專案實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,還可以跟老司機交流討教!
JsonPath 是一種資訊抽取類別庫,是從JSON檔案中抽取指定資訊的工具,提供多種語言實作版本,包括:Javascript, Python, PHP 和 Java,
JsonPath 對于 JSON 來說,相當于 XPATH 對于 XML,
JsonPath與XPath語法對比:
Json結構清晰,可讀性高,復雜度低,非常容易匹配,下表中對應了XPath的用法,

相關推薦:《Python相關教程》
利用JSONPath爬取拉勾網上所有的城市
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
# json決議庫,對應到lxml
import json
# json的決議語法,對應到xpath
import jsonpath
url = "http://www.lagou.com/lbs/getAllCitySearchLabels.json"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
request = urllib2.Request(url, headers = headers)
response = urllib2.urlopen(request)
# 取出json檔案里的內容,回傳的格式是字串
html = response.read()
# 把json形式的字串轉換成python形式的Unicode字串
unicodestr = json.loads(html)
# Python形式的串列
city_list = jsonpath.jsonpath(unicodestr, "$..name")
#for item in city_list:
# print item
# dumps()默認中文為ascii編碼格式,ensure_ascii默認為Ture
# 禁用ascii編碼格式,回傳的Unicode字串,方便使用
array = json.dumps(city_list, ensure_ascii=False)
#json.dumps(city_list)
#array = json.dumps(city_list)
with open("lagoucity.json", "w") as f:
f.write(array.encode("utf-8"))
結果:

糗事百科爬取
利用XPATH的模糊查詢
獲取每個帖子里的內容
保存到 json 檔案內
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
import json
from lxml import etree
url = "http://www.qiushibaike.com/8hr/page/2/"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'}
request = urllib2.Request(url, headers = headers)
html = urllib2.urlopen(request).read()
# 回應回傳的是字串,決議為HTML DOM模式 text = etree.HTML(html)
text = etree.HTML(html)
# 回傳所有段子的結點位置,contains()模糊查詢方法,第一個引數是要匹配的標簽,第二個引數是標簽名部分內容
node_list = text.xpath('//div[contains(@id, "qiushi_tag")]')
items ={}
for node in node_list:
# xpath回傳的串列,這個串列就這一個引數,用索引方式取出來,用戶名
username = node.xpath('./div/a/@title')[0]
# 取出標簽下的內容,段子內容
content = node.xpath('.//div[@]/span')[0].text
# 取出標簽里包含的內容,點贊
zan = node.xpath('.//i')[0].text
# 評論
comments = node.xpath('.//i')[1].text
items = {
"username" : username,
"content" : content,
"zan" : zan,
"comments" : comments
}
with open("qiushi.json", "a") as f:
f.write(json.dumps(items, ensure_ascii=False).encode("utf-8") + "
")
最后注意:光理論是不夠的,這里順便免費送大家一套2020最新python入門到高級專案實戰視頻教程,可以去小編的Python交流.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,還可以跟老司機交流討教!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/141174.html
標籤:Python
下一篇:android studio廣播
