介绍
这篇文章将为大家详细讲解有python爬关虫中JSON和JSONPath是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
<强> JSON和JSONPath 强>
JSON (JavaScript对象表示法)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。
JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:JavaScript、python、PHP和Java。
JSONPath对于JSON来说,相当于XPATH对于XML。
JSONPath与XPATH语法对比:
JSON结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPATH的用法。
<>强利用JSONPath爬取拉勾网上所有的城市强>
# !/usr/bin/env python #,- *安康;编码:utf-8 - * import urllib2 #,json解析库,对应到lxml import json #,json的解析语法,对应到xpath import jsonpath 时间=url “http://www.lagou.com/lbs/getAllCitySearchLabels.json" headers =,{& # 39;用户代理# 39;:& # 39;Mozilla/5.0, (Windows NT 6.1;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/60.0.3112.101 Safari/537.36 & # 39;} request =, urllib2.Request (url, headers =,标题) 时间=response urllib2.urlopen(请求) #,,取出json文件里的内容,返回的格式是字符串=,html response.read () #,把json形式的字符串转换成python形式的Unicode字符串 时间=unicodestr json.loads (html) #,Python形式的列的表 时间=city_list jsonpath.jsonpath (unicodestr,“. . name"美元;) # for item  city_list拷贝: #,,,,print 项目 #,转储()默认中文为ascii编码格式,ensure_ascii默认为真 #,禁用ascii编码格式,返回的Unicode字符串,方便使用 时间=array json.dumps (city_list, ensure_ascii=False) # json.dumps (city_list) # array =, json.dumps (city_list) with 开放(“lagoucity.json",,“w"), as f: ,,,f.write (array.encode (“utf-8"))
结果:
<强>糗事百科爬取强>
利用XPATH的模糊查询
获取每个帖子里的内容
保存到JSON文件内
# !/usr/bin/env python #,- *安康;编码:utf-8 - * import urllib2 import json 得到lxml import  etree 时间=url “http://www.qiushibaike.com/8hr/page/2/" headers =,{& # 39;用户代理# 39;:& # 39;Mozilla/5.0, (Windows NT 6.1;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/60.0.3112.101 Safari/537.36 & # 39;} request =, urllib2.Request (url, headers =,标题) 时间=html urllib2.urlopen(请求).read () #,响应返回的是字符串,解析为HTML DOM模式,text =, etree.HTML (html) 时间=text etree.HTML (html) #,返回所有段子的结点位置,包含()模糊查询方法,第一个参数是要匹配的标签,第二个参数是标签名部分内容 时间=node_list text.xpath (& # 39;//div[包含(@ id,“qiushi_tag")] & # 39;) items ={} for node  node_list拷贝: ,,,#,xpath返回的列表,这个列表就这一个参数,用索引方式取出来,用户名 ,,,username =, node.xpath (& # 39;。/div//@title& # 39;) [0] ,,,#,取出标签下的内容,段子内容 ,,,content =, node.xpath (& # 39;。//div [@class=癱ontent"]/跨度# 39;)[0]。text ,,,#,取出标签里包含的内容,点赞 ,,,zan =, node.xpath(& # 39;。//我# 39;)[0]。text ,,,#,评论 ,,,comments =, node.xpath(& # 39;。//我# 39;)[1]。text ,,,items =, { ,,,,,,,“username",:,用户名, ,,,,,,,“content",:,内容, ,,,,,,,“zan",:,赞 ,,,,,,,“comments",:评论 ,,,} ,,,with 开放(“qiushi.json",,“a"), as f: ,,,,,,,f.write (json.dumps(物品,ensure_ascii=False) .encode (“utf-8"), +,“\ n")
关于python爬虫中JSON和JSONPath是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。