一、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. mysql update 多表 (复制)

    定我们有两张表,一张表为Product表存放产品信息,其中有产品价格列Price:另外一张表是ProductPrice表,我们要将ProductPrice表中的价格字段Price更新为Price表中价 ...

  2. Winter-1-A A + B 解题报告及测试数据

    Time Limit:1000MS Memory Limit:32768KB Description Calculate A + B. Input Each line will contain two ...

  3. Java并发编程:并发容器之ConcurrentHashMap(转)

    本文转自:http://www.cnblogs.com/dolphin0520/p/3932905.html Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载 ...

  4. [2010-12-28 20:39]ActionScript3.0中用要的公式

    一.质点的运动(1)——直线运动 1)匀变速直线运动 1.平均速度V平=s/t(定义式) 2.有用推论Vt2-Vo2=2as 3.中间时刻速度Vt/2=V平=(Vt+Vo)/2 4.末速度Vt=Vo+ ...

  5. RedisTemplate和StringRedisTemplate

    最近在开始在学习Redis以及如何在Java当中去使用Redis,Redis是什么我这里就不说了. 我主要想说的是Redis和Java当中Spring结合起来的时候,使用到的RedisTemplate ...

  6. c++ 跳转语句块

    p170~p172:跳转语句:1.break:对while for switcho有效!2.continue:中断当前迭代,但是循环还要继续.因此对while for有效,对switch无效!3.go ...

  7. 20145303刘俊谦 《Java程序设计》第2周学习总结

    20145303刘俊谦 <Java程序设计>第2周学习总结 教材学习内容总结 1.对于标识符的一些名称规范(觉得挺重要而且容易混淆!定义就不写了,列一些例子): 包名: xxxyyyzzz ...

  8. node实现rar格式压缩

    背景 由于公司的CMS系统里,只接受rar格式压缩的文件,所以没法直接使用nodejs里提供的zip压缩组件.只能从winRar软件入手了,但网上没有多少这方面相关的东西,所以下面也是自己尝试着在做. ...

  9. eclipse集成tomcat修改字符集参数

    问题: 在eclipse 4.4(Luna)中集成tomcat时,直接修改原tomcat目录中的配置文件,不起作用. 有时,我们会修改字符集参数为utf-8,以解决中文乱码问题,改动之后依然乱码…… ...

  10. 源码编译nginx

    [root@localhost local]# yum -y install pcre pcre-devel#解压nginx源码包[root@localhost local]# tar -zxvf / ...