• pyhton 从web获取json数据 保存到本地然后再读取


    从web中获取json数据直接进行处理总认为太慢。主要是从web中获取获取数据的过程有点慢。

    所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作。应该就要快非常多。

    这中间的主要问题就是格式的转换问题:1、将获取取的json数据序列化后保存到本地文件里;2、从文件里逐行读取数据,再将其反序列化为json格式。

    详细的一个演示样例程序例如以下:

    【为保护个人信息,程序中的一些代码不完整】

    from urllib.request import urlopen;
    from urllib.parse import quote;
    import json;
    
    #方法作用:从ltp-cloud云平台中获取json数据,并保存到本地文件里
    #方法參数:sent是被处理的句子參数
    def getAndSaveJSON(sent):
        
        #生成訪问目标url
        url_get_base = "http://api.ltp-cloud.com/analysis/?"
        api_key = '你的api_key值'
        text = quote(sent); #利用quote方法将url中的汉字进行转码
        format = 'json';
        pattern = 'all';
        fullurl=url_get_base+"api_key="+api_key+"&text="+text+"&format="+format+"&pattern="+pattern
        
        try:
            #获取json数据
            rawtext=urlopen(fullurl,timeout=15).read();
            jsonStr = json.loads(rawtext.decode('utf8'));
            
            #将ltp处理结果保存到文本中
            f=open("txt/jsondatafile.json","a",encoding="utf8"); 
            f.write(json.dumps(jsonStr[0][0],ensure_ascii=False)+"
    "); #保存前,须要将jsonStr序列化为python相对的数据类型。去掉最后的换行符
            f.close();
        except Exception as err:
            print(err);
            print(fullurl);
            print('url 訪问出错');
    
    #调用方法获取并保存json数据
    getAndSaveJSON("河南省公安厅曾以涉嫌骗取出入境证件,对山西前首富张新明进行通缉,并悬赏500元。");
    getAndSaveJSON("郑州是河南的省会。");
    
    #从jsondatafile.json中读取出json数据
    for eachLine in open("txt/jsondatafile.json","r",encoding="utf8"):
        jsonData=json.loads(eachLine);#反序列化,得到json格式数据
        print(jsonData)


    结果:

    [{'cont': '河南省', 'parent': 1, 'relate': 'ATT', 'ne': 'B-Ni', 'pos': 'ns', 'arg': [], 'id': 0}, {'cont': '公安厅', 'parent': 5, 'relate': 'SBV', 'ne': 'E-Ni', 'pos': 'n', 'arg': [], 'id': 1}, {'cont': '曾', 'parent': 5, 'relate': 'ADV', 'ne': 'O', 'pos': 'd', 'arg': [], 'id': 2}, {'cont': '以', 'parent': 5, 'relate': 'ADV', 'ne': 'O', 'pos': 'p', 'arg': [], 'id': 3}, {'cont': '涉嫌', 'parent': 3, 'relate': 'POB', 'ne': 'O', 'pos': 'v', 'arg': [], 'id': 4}, {'cont': '骗取', 'parent': -1, 'relate': 'HED', 'ne': 'O', 'pos': 'v', 'arg': [{'type': 'A0', 'end': 1, 'id': 0, 'beg': 0}, {'type': 'ADV', 'end': 2, 'id': 1, 'beg': 2}, {'type': 'MNR', 'end': 4, 'id': 2, 'beg': 3}, {'type': 'A1', 'end': 7, 'id': 3, 'beg': 6}], 'id': 5}, {'cont': '出入境', 'parent': 7, 'relate': 'ATT', 'ne': 'O', 'pos': 'j', 'arg': [], 'id': 6}, {'cont': '证件', 'parent': 5, 'relate': 'VOB', 'ne': 'O', 'pos': 'n', 'arg': [], 'id': 7}, {'cont': ',', 'parent': 5, 'relate': 'WP', 'ne': 'O', 'pos': 'wp', 'arg': [], 'id': 8}, {'cont': '对', 'parent': 14, 'relate': 'ADV', 'ne': 'O', 'pos': 'p', 'arg': [], 'id': 9}, {'cont': '山西', 'parent': 12, 'relate': 'ATT', 'ne': 'S-Ns', 'pos': 'ns', 'arg': [], 'id': 10}, {'cont': '前', 'parent': 12, 'relate': 'ATT', 'ne': 'O', 'pos': 'nd', 'arg': [], 'id': 11}, {'cont': '首富', 'parent': 13, 'relate': 'ATT', 'ne': 'O', 'pos': 'n', 'arg': [], 'id': 12}, {'cont': '张新明', 'parent': 9, 'relate': 'POB', 'ne': 'S-Nh', 'pos': 'nh', 'arg': [], 'id': 13}, {'cont': '进行', 'parent': 5, 'relate': 'COO', 'ne': 'O', 'pos': 'v', 'arg': [{'type': 'A1', 'end': 15, 'id': 0, 'beg': 15}], 'id': 14}, {'cont': '通缉', 'parent': 14, 'relate': 'VOB', 'ne': 'O', 'pos': 'v', 'arg': [], 'id': 15}, {'cont': ',', 'parent': 5, 'relate': 'WP', 'ne': 'O', 'pos': 'wp', 'arg': [], 'id': 16}, {'cont': '并', 'parent': 18, 'relate': 'ADV', 'ne': 'O', 'pos': 'c', 'arg': [], 'id': 17}, {'cont': '悬赏', 'parent': 5, 'relate': 'COO', 'ne': 'O', 'pos': 'v', 'arg': [{'type': 'A1', 'end': 19, 'id': 0, 'beg': 19}], 'id': 18}, {'cont': '500', 'parent': 20, 'relate': 'ATT', 'ne': 'O', 'pos': 'm', 'arg': [], 'id': 19}, {'cont': '元', 'parent': 18, 'relate': 'VOB', 'ne': 'O', 'pos': 'q', 'arg': [], 'id': 20}, {'cont': '。', 'parent': 5, 'relate': 'WP', 'ne': 'O', 'pos': 'wp', 'arg': [], 'id': 21}]
    [{'cont': '郑州', 'parent': 1, 'relate': 'SBV', 'ne': 'S-Ns', 'pos': 'ns', 'arg': [], 'id': 0}, {'cont': '是', 'parent': -1, 'relate': 'HED', 'ne': 'O', 'pos': 'v', 'arg': [{'type': 'A0', 'end': 0, 'id': 0, 'beg': 0}, {'type': 'A1', 'end': 4, 'id': 1, 'beg': 2}], 'id': 1}, {'cont': '河南', 'parent': 4, 'relate': 'ATT', 'ne': 'S-Ns', 'pos': 'ns', 'arg': [], 'id': 2}, {'cont': '的', 'parent': 2, 'relate': 'RAD', 'ne': 'O', 'pos': 'u', 'arg': [], 'id': 3}, {'cont': '省会', 'parent': 1, 'relate': 'VOB', 'ne': 'O', 'pos': 'n', 'arg': [], 'id': 4}, {'cont': '。', 'parent': 1, 'relate': 'WP', 'ne': 'O', 'pos': 'wp', 'arg': [], 'id': 5}]
    


  • 相关阅读:
    微软 PowerShell Script Explorer
    MVC, MVP, MVVM比较以及区别(上)
    MVC中使用Unity Ioc Container
    java实现电脑远程控制完整源代码(转)
    强大的Mockito测试框架(转)
    File中操作路径的API(转)
    java如何把char型数据转换成int型数据(转)
    Test class should have exactly one public zero-argument constructor
    tomcat的webappclassloader中一个奇怪的异常信息
    在asp.net mvc中使用PartialView返回部分HTML段
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6892596.html
Copyright © 2020-2023  润新知