最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python爬虫之JSON和JSONPath

    正文概述    2020-10-28   429

    python爬虫之JSON和JSONPath

    JSON和JSONPath

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

    JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, php 和 Java。

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

    JsonPath与XPath语法对比:

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

    python爬虫之JSON和JSONPath

    相关推荐:《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"))

    结果:

    python爬虫之JSON和JSONPath

    糗事百科爬取

    利用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[@class="content"]/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") + "\n")

    相关推荐:

    Python爬虫中的XML和XPATH是什么


    起源地下载网 » python爬虫之JSON和JSONPath

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元