json与api- 天气api 博客词频分析
一、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 博客词频分析的更多相关文章
- 使用metaweblog API实现通用博客发布 之 API测试
使用metaweblog API实现通用博客发布 之 API测试 使用博客比较少,一则是文笔有限,怕写出的东西狗屁不通,有碍观瞻, 二则是懒,很讨厌要登录到网站上写东西,也没有那么多时间(借口).个人 ...
- 使用metaweblog API实现通用博客发布 之 版本控制
使用metaweblog API实现通用博客发布 之 版本控制 接上一篇本地图片自动上传以及替换路径,继续解决使用API发布博客的版本控制问题. 当本地文档修订更新以后,如何发现版本更新,并自动发布到 ...
- 使用metaweblog API实现通用博客发布 之 本地图片自动上传以及替换路径
使用metaweblog API实现通用博客发布 之 本地图片自动上传以及替换路径 通过metaweblog API 发布博文的时候,由于markdown中的图片路径是本地路径,将导致发布的文章图片不 ...
- [技术博客] BeautifulSoup4分析网页
[技术博客] BeautifulSoup4分析网页 使用BeautifulSoup4进行网页文本分析 前言 进行网络爬虫时我们需要从网页源代码中提取自己所需要的信息,分析整理后存入数据库中. 在pyt ...
- Linux内核分析第三周学习博客——跟踪分析Linux内核的启动过程
Linux内核分析第三周学习博客--跟踪分析Linux内核的启动过程 实验过程截图: 过程分析: 在Linux内核的启动过程中,一共经历了start_kernel,rest_init,kernel_t ...
- 初始化 RESTful API 风格的博客系统
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在 HelloDjango 全栈系列教程的第一步--Django博客教程(第二版)中 ...
- WebGIS博客文本分析(词频分析)手动扒取 去除格式 词语分割 统计分析
1. [置顶](一)开篇—杂谈WebGIS 摘要: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 ...
- weather API 天气api接口 收集整理
腾讯 http://sou.qq.com/online/get_weather.php?callback=Weather&city=南京 中国天气-weather.com.cn http:// ...
- 2020BUAA-个人博客-案例分析
个人博客作业-软件案例分析 项目 内容 北航2020软工 班级博客 作业要求 具体要求 我的课程目标 通过案例分析提升自己对于软件工程的认识 课程收获 分析软件,了解软件的定位 第一部分 调研,评测( ...
随机推荐
- PKU 1521 Entropy(简单哈弗曼树_水过)
题目大意:原题链接 给你一个字符串,首先是计算出一个按正常编码的编码长度,其次是计算出一个用霍夫曼编码的编码长度,最后求正常编码的长度除以霍夫曼编码长度的比值,保留一位小数. 解题思路:需要知道 1. ...
- XVII Open Cup named after E.V. Pankratiev Grand Prix of Moscow Workshops, Sunday, April 23, 2017 Problem D. Great Again
题目: Problem D. Great AgainInput file: standard inputOutput file: standard outputTime limit: 2 second ...
- ZOJ - 4048 Red Black Tree (LCA+贪心) The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online
题意:一棵树上有m个红色结点,树的边有权值.q次查询,每次给出k个点,每次查询有且只有一次机会将n个点中任意一个点染红,令k个点中距离红色祖先距离最大的那个点的距离最小化.q次查询相互独立. 分析:数 ...
- 20145216史婧瑶《Java程序设计》第5周学习总结
20145216 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 8.1 语法与继承架构 Java中所有错误都会被打包为对象,运用try.catch,可以在错误发生 ...
- Java ArrayList在foreach中remove的问题分析
目录 iterator itr.hasNext 和 itr.next 实现 倒数第二个元素的特殊 如何避坑 都说ArrayList在用foreach循环的时候,不能add元素,也不能remove元素, ...
- jackson序列化字段字母大小写及字段名重复
一:Jackson默认的属性发现规则将会查找到如下所述的属性: 1.所有被public修饰的字段(成员变量): 2.所有被public修饰的getter(即形如“getXxx()”的方法): 3.所有 ...
- Mac下配置Hadoop环境
下载Hadoop(我下载的是2.8.0版本) 点击此处下载 下载后,使用 tar -zxvf tar包名 解压tar包,解压完成后有这样一个文件出现 修改Hadoop的配置文件 需要修改的配置文件在H ...
- sscanf输入总结
2017-08-21 15:09:47 writer:pprp sscanf很好用的,一般配合gets()来使用 /* theme: usage of sscanf writer:pprp date: ...
- PE文件格式学习之PE头移位
以前刚开始学网络安全,是从免杀开始的.记得那时候杀毒软件还很弱.金山江民瑞星还存在. 那会什么原理也不懂,就一直瞎鼓捣.(后来转入渗透行列了) 这段时间一直在学PE格式,突然想起来以前很古老的PE文件 ...
- java HTTP代码示例
//测试环境发送用例 @Test public void testSendForTest() { String url = "http://172.16.30.108:8138/ap ...