av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

Python爬蟲JSON及JSONPath運(yùn)行原理詳解

瀏覽:4日期:2022-07-22 18:46:12

JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,它使得人們很容易的進(jìn)行閱讀和編寫。同時(shí)也方便了機(jī)器進(jìn)行解析和生成。適用于進(jìn)行數(shù)據(jù)交互的場景,比如網(wǎng)站前臺與后臺之間的數(shù)據(jù)交互。

JsonPath 是一種信息抽取類庫,是從JSON文檔中抽取指定信息的工具,提供多種語言實(shí)現(xiàn)版本,包括:Javascript, Python, PHP 和 Java。

JsonPath 對于 JSON 來說,相當(dāng)于 XPATH 對于 XML。

JsonPath與XPath語法對比:

Json結(jié)構(gòu)清晰,可讀性高,復(fù)雜度低,非常容易匹配,下表中對應(yīng)了XPath的用法。

Python爬蟲JSON及JSONPath運(yùn)行原理詳解

相關(guān)推薦:《Python相關(guān)教程》

利用JSONPath爬取拉勾網(wǎng)上所有的城市

#!/usr/bin/env python# -*- coding:utf-8 -*-import urllib2# json解析庫,對應(yīng)到lxmlimport json# json的解析語法,對應(yīng)到xpathimport jsonpathurl = '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文件里的內(nèi)容,返回的格式是字符串html = response.read()# 把json形式的字符串轉(zhuǎn)換成python形式的Unicode字符串unicodestr = json.loads(html)# Python形式的列表city_list = jsonpath.jsonpath(unicodestr, '$..name')#for item in city_list:# print item# dumps()默認(rèn)中文為ascii編碼格式,ensure_ascii默認(rèn)為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'))

結(jié)果:

Python爬蟲JSON及JSONPath運(yùn)行原理詳解

糗事百科爬取

利用XPATH的模糊查詢

獲取每個(gè)帖子里的內(nèi)容

保存到 json 文件內(nèi)

#!/usr/bin/env python# -*- coding:utf-8 -*-import urllib2import jsonfrom lxml import etreeurl = '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()# 響應(yīng)返回的是字符串,解析為HTML DOM模式 text = etree.HTML(html)text = etree.HTML(html)# 返回所有段子的結(jié)點(diǎn)位置,contains()模糊查詢方法,第一個(gè)參數(shù)是要匹配的標(biāo)簽,第二個(gè)參數(shù)是標(biāo)簽名部分內(nèi)容node_list = text.xpath(’//div[contains(@id, 'qiushi_tag')]’)items ={}for node in node_list: # xpath返回的列表,這個(gè)列表就這一個(gè)參數(shù),用索引方式取出來,用戶名 username = node.xpath(’./div/a/@title’)[0] # 取出標(biāo)簽下的內(nèi)容,段子內(nèi)容 content = node.xpath(’.//div[@class='content']/span’)[0].text # 取出標(biāo)簽里包含的內(nèi)容,點(diǎn)贊 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') + '')

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 中文字幕av久久爽一区 | 国产性猛交╳xxx乱大交 | 欧美一级淫片bbb一84 | 亚洲综合在线视频 | 99久久精品国产毛片 | 日韩精品三级 | 天天色天天 | 欧美在线视频一区二区 | 国产日韩在线视频 | 日韩视频免费在线观看 | 欧美视频亚洲视频 | 国产精品国产三级国产aⅴ浪潮 | 国产美女av | 成人毛片网站 | 亚洲在线免费视频 | 亚洲综合五月 | 日本中文字幕在线 | 日韩欧美视频在线 | 日韩欧美精品在线 | 日韩精品一级 | 亚洲精品一区二区三 | www性| 亚洲精品久久久久avwww潮水 | 精品国产一区二区三区久久久蜜月 | 交换多p群乱高h文 | 三级在线观看 | 69免费视频 | 91精品在线免费观看 | 黄色大片在线免费观看 | 日韩免费在线 | 久久久久久久久国产 | 黄色网页免费 | 日本精品国产 | 91久久国产精品 | 一区在线观看视频 | 国产精品久久久久久久久借妻 | 福利一区福利二区 | 日韩免费在线视频 | 女子spa高潮呻吟抽搐 | 亚洲视频一区二区三区四区 | 97中文字幕|