一、json基础

1.1 json的介绍

  json现在成为各种程序与语言之间交互的一种数据格式,本质是文本,字符串。

  json有两种格式:

    1.  类似字典  {k:v,k,v}

    2.  类似列表 {}

  python的json模块: json

1.2 json的方法

  json和pickle的方法差不多。有两种:文件级别的转换 与 内存级别的转换!

1.2.1 文件级别的转换

  load:  文本(字符串)   --》 dict

  dump:  dict                 -》   文本(字符串)

import json

# 字典以json的格式写入到文件中
d = {
'name': '娄辉',
'city': 'hangzhou',
'hobby': ['power', 'money', 'girl']
}
with open('1.json', 'w') as f:
json.dump(d, f) # 从json的文件中读取
with open('1.json', 'r') as f:
s = json.load(f) print(type(s))
print(s)

1.2.2 内存级别的转换

import json

# dict 到 json
d = {
'name': '娄辉',
'city': 'hangzhou',
'hobby': ['power', 'money', 'girl']
} x = json.dumps(d)
print(x)
print(type(x))

# json 到 dict
# json的文本内容,字符串
js = '{"name": "娄辉", "city": "hangzhou", "hobby": ["power", "money", "girl"]}'
a = json.loads(js)
print(a, type(a))

1.3 json的美化输出

  在转换成json进行美化, dump与 dumps都支持!

  注意的是:如果不是使用默认的分隔符,转字典的时候会报错的。我们一般都会使用默认的分隔符 ,:

x = json.dumps(d, indent=4, separators=(',', ';'))

二、api

  应用程序接口(英语:Application Programming Interface,简称:API)

  又称为应用编程接口,就是软件系统不同组成部分衔接的约定。 

  json就是各种api 的信息交互。

三、案列

3.1 天气案列

#!usr/bin/env python
# -*- conding:utf-8 -*-
# weather.py
# 查询天气调用
# author: louhui import requests
import json def query_weather(city_name):
'从阿里的api云市场获取数据,返回一个json数据'
url = 'http://jisutqybmf.market.alicloudapi.com/weather/query'
city = {'city': city_name} # 定义get参数
headers = {'Authorization': 'APPCODE 4e593528152b461fb7f6c78ce0a41878'} # 定义请求的头部,阿里的认证
r = requests.get(url=url, headers=headers, params=city)
print(r.status_code)
if r.status_code == 200:
return r.json()
else:
print('发生错误,状态码为:', r.status_code) def save(data: dict):
'保存天气数据,dict -> json文本'
with open('wea.json', 'w', encoding='utf-8') as f: # 注意编码
json.dump(data, f, ensure_ascii=False) # ensure_ascii为True的时候,中文只能显示unicode def read():
'从json文件中读取数据。json文本->dict'
with open('wea.json', 'r', encoding='utf-8') as f:
return json.load(f) def main():
# 1---避免接口使劲调用,先存为文本
# city = '杭州'
# data = query_weather(city)
# save(data) # 2---从json文本中直接读取,进程操作
data = read()
weather_list = data['result']['daily']
for date in weather_list:
print(date['date'], date['week'],date['night']['weather']) if __name__ == '__main__':
main()

 3.2  博客词频分析

from bs4 import BeautifulSoup  # 对
import requests
import jieba # 从字符串分词
import collections # 列表中统计个数 class BlogAnaly:
def __init__(self, blog_url):
blog_url = 'http://blog.51cto.com/de8ug/2110764'
self.r = requests.get(blog_url) def trans_data(self):
contents = BeautifulSoup(self.r.text, 'html.parser') # 生产bs4对象,便于操作。 第二个参数为固定参数 all_p = contents.find_all('p') # 找出所有p便签的内容,即段落内容,是一个列表的形式 all_text = ''
for i in all_p:
all_text += str(i.text) # 转换为字符串,str确保转换为字符串 text_list = []
text = jieba.cut(all_text) # 分词的功能,返回一个迭代器
for i in text:
text_list.append(i) return text_list def get_most_common(self, max_num=30): # 数据直接在上面定义
ret = {'status': 0, 'statusText': 'ok', 'data': {}}
try:
# 使用集合的统计功能
couter = collections.Counter(self.trans_data())
for key, v in couter.most_common(max_num):
ret['data'][key] = v
except Exception as e:
ret['status'] = 1
ret['statusText'] = e # TODO
return ret def main():
x = BlogAnaly('https://www.cnblogs.com/flame7/p/9110579.html')
dic = x.get_most_common() # 这是一个接口
print(dic.get('status'))
if dic.get('status') == 0:
print(dic.get('data')) if __name__ == '__main__':
main()

  

json与api- 天气api 博客词频分析的更多相关文章

  1. 使用metaweblog API实现通用博客发布 之 API测试

    使用metaweblog API实现通用博客发布 之 API测试 使用博客比较少,一则是文笔有限,怕写出的东西狗屁不通,有碍观瞻, 二则是懒,很讨厌要登录到网站上写东西,也没有那么多时间(借口).个人 ...

  2. 使用metaweblog API实现通用博客发布 之 版本控制

    使用metaweblog API实现通用博客发布 之 版本控制 接上一篇本地图片自动上传以及替换路径,继续解决使用API发布博客的版本控制问题. 当本地文档修订更新以后,如何发现版本更新,并自动发布到 ...

  3. 使用metaweblog API实现通用博客发布 之 本地图片自动上传以及替换路径

    使用metaweblog API实现通用博客发布 之 本地图片自动上传以及替换路径 通过metaweblog API 发布博文的时候,由于markdown中的图片路径是本地路径,将导致发布的文章图片不 ...

  4. [技术博客] BeautifulSoup4分析网页

    [技术博客] BeautifulSoup4分析网页 使用BeautifulSoup4进行网页文本分析 前言 进行网络爬虫时我们需要从网页源代码中提取自己所需要的信息,分析整理后存入数据库中. 在pyt ...

  5. Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程

    Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...

  6. 初始化 RESTful API 风格的博客系统

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在 HelloDjango 全栈系列教程的第一步--Django博客教程(第二版)中 ...

  7. WebGIS博客文本分析(词频分析)手动扒取 去除格式 词语分割 统计分析

    1.      [置顶](一)开篇—杂谈WebGIS 摘要: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 ...

  8. weather API 天气api接口 收集整理

    腾讯 http://sou.qq.com/online/get_weather.php?callback=Weather&city=南京 中国天气-weather.com.cn http:// ...

  9. 2020BUAA-个人博客-案例分析

    个人博客作业-软件案例分析 项目 内容 北航2020软工 班级博客 作业要求 具体要求 我的课程目标 通过案例分析提升自己对于软件工程的认识 课程收获 分析软件,了解软件的定位 第一部分 调研,评测( ...

随机推荐

  1. php写守护进程(转载 http://blog.csdn.net/tengzhaorong/article/details/9764655)

    守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.php也可以实现守护进程的功能. 1.基本概念 进程 ...

  2. HDU - 5592 ZYB's Premutation (权值线段树)

    题意:给出序列前k项中的逆序对数,构造出这个序列. 分析:使用权值线段树来确定序列元素. 逆序对的数量肯定是递增的,从最后一个元素开始逆向统计,则\(a[i] - a[i-1]\)即位置i之前比位置i ...

  3. 【转载】IDEA:放置型塔防备忘录

    下周开始做原型了,我需要再次细细的整理一遍设计思路,确保每一个设计都能为了我所追求的玩家体验添砖加瓦,而不是互相打架.同时本文还能提供最原始的VISION,待到将来开发万一陷入泥淖,翻出此文来可以起到 ...

  4. $python用装饰器实现一个计时器

    直接上代码: import time from functools import wraps # 定义装饰器 def fn_timer(function): @wraps(function) def ...

  5. [日志]logback告警

    开发过程中,难免会有发生错误或异常的时候,有些是需要及时通知到相关开发人员的.logback可以通过简单的配置达到邮件告警的目的. 一.错误告警 如下配置,所有Error级别的log发送邮件告警给re ...

  6. python2与python3语法区别之_重定向

    python2与python3两版本的区别是众所周知的,今天主要记录python下版本2 与版本3的区别 python2 In [7]: logfile = open('/tmp/mylog.log' ...

  7. [BZOJ4653 区间]

    Description 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x ...

  8. mysql完全卸载

    转载自(http://blog.csdn.net/typa01_kk/article/details/49057073) #################CentOS7下MySQL的卸载###### ...

  9. System.IO命名空间下常用的类

    System.IO System.IO.Directory 目录 System.IO.Path 文件路径(包含目录和文件名) System.IO.FileInfo 提供创建.复制.删除.移动和打开文件 ...

  10. vue知识汇总

    关于slot solt插槽,用来进行预定义,比如app里面的heard,各种情况下未必一致,把每种情况都加上solt,对应的情况下覆盖solt就可以了