一、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. 001-navicat for oracle 12 破解安装

    1.首先软件包和破解文件都需要到我给的百度云盘地址下载,去官网下载的中文版破解不了,至于官网的英文版,我就不清楚了. (1)链接地址. https://pan.baidu.com/s/1jxj4uzg ...

  2. Git在Githib和Github上的使用

    本文使用的环境是linux里 一.git的常用命令解释: 1.基础命令: git init #创建版本库 git add <file> #将文件修改添加到暂存区 git commit -m ...

  3. JQuery EasyUI 扩展方法 日期控件 设置时间段函数

    /** Jquery扩展方法--by hgx 2018年1月8日-- * 设置时间段函数,开始时间(1号)与结束时间(当前日期) * 传入参数:--spaceMonth:查询间隔月,1为间隔查询一个月 ...

  4. Ubuntu下安装keras

    0 系统版本Ubuntu16.04 1 系统更新 sudo apt update sudo apt upgrade 2 安装python基础开发包 sudo apt install -y python ...

  5. C++文件操作:打开文件和写入文件

    如果程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序重新运行一遍:而且,这个结果也不能被保留. 如果希望程序的运行结果能够永久保留下来,供随时查阅或取用,则需要将其保存在文件中. 文件分 ...

  6. Http:设置 浏览器中MIME 类型

    http://www.163ns.com/zixun/post/4602.html 自定义MIME类型支持FLV的相关设置 网络空间支持FLV的相关设置其实很简单,就是自定义一个MIME类型 一般虚拟 ...

  7. Java:延迟功能的Robot在Lunix系统上会报错

    Java:延迟功能的Robot在Lunix系统上会报错 关于延迟功能的Robot: 今天开发过程中发现,本机开发好的项目,部署到Lunix服务器竟然报错!查了代码发现: Robot r = new R ...

  8. 20145321 《Java程序设计》第3周学习总结

    20145321 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 4.1 类与对象 1.定义类:类定义时用关键词 class. 一个原始码中可以有多个类定义,但只能有一个公开 ...

  9. MysQL使用一高级应用(上)

    简介 实体与实体之间有3种对应关系,这些关系也需要存储下来 在开发中需要对存储的数据进行一些处理,用到内置的一些函数 视图用于完成查询语句的封装 事务可以保证复杂的增删改操作有效 关系 创建成绩表sc ...

  10. Python-自省机制

     help 如果说能够通过一个函数就能够学会 Python,那这个函数一定就是 Python 提供的第一 个自带说明 help().help 函数的作用就是查看对象的帮组文档.比如: >> ...