python爬虫中JSON和JSONPath是什么

  介绍

这篇文章将为大家详细讲解有python爬关虫中JSON和JSONPath是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强> JSON和JSONPath

JSON (JavaScript对象表示法)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。

JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:JavaScript、python、PHP和Java。

JSONPath对于JSON来说,相当于XPATH对于XML。

JSONPath与XPATH语法对比:

JSON结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPATH的用法。

 python爬虫中JSON和JSONPath是什么

<>强利用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"))

结果:

 python爬虫中JSON和JSONPath是什么

<强>糗事百科爬取

利用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是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

python爬虫中JSON和JSONPath是什么