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软工 班级博客 作业要求 具体要求 我的课程目标 通过案例分析提升自己对于软件工程的认识 课程收获 分析软件,了解软件的定位 第一部分 调研,评测( ...
随机推荐
- Springboot 日志管理配置logback-spring.xml
几种常见的日志 Log4j:是最早的日志框架,是apach旗下的,可以单独使用,也可配合日志框架JCL使用: Log4j2:apach旗下的关于log4j的升级版: Logback:是基于slf4j接 ...
- maven 项目配置到tomcat不能正常启动
最近使用IntelliJ IDEA搭建公司项目,该项目是maven项目,加载jar和编译的时候没有任何异常,但是部署到tomcat上之后,就会出现如下异常: org.apache.catalina.L ...
- vue的ref与$refs
一. ref使用在父组件上 父组件html: <information ref='information'></information> import information ...
- EasyUI 的DataGrid中DateTime的格式化问题
想必用过EasyUI的朋友们都应该会遇到这样的情况吧:(下图) 在EasyUI中DataGrid中如果要显示DateTime的时间时候,便会显示上图这样的格式,很明显,这里的格式不会是我们想要的,我们 ...
- tomcat源码调试
三.tomcat目录结构 tomcat的下载安装有很多教程,不再赘述. 现在的tomcat已经到9了,当tomcat下载安装完成后,其目录大致如下: 除了上面的文件夹,还有四个文件: ...
- Spark机器学习9· 实时机器学习(scala with sbt)
1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors.消息队列.Flume ...
- 【WPF】修改ComboBox样式
修改WPF默认的ComboBox控件样式 如下图所示: 修改代码如下: <UserControl.Resources> <Style TargetType="ToggleB ...
- 在VMware中使用Nat方式设置静态IP
为了在公司和家中不改变ip,所以采用vm的NAT模式来设置静态ip 1.vm采用NAT模式联网 2.编辑vm虚拟机设置 3.查看该网段的网关 可以看出网关为192.168.44.2,然后开始设置静态i ...
- centos安装oracle客户端
使用centos远程登陆oracle服务器: 下载需要的rpm包: [root@node1 oracle]# lltotal 59872-rw-r--r-- 1 root root 59865008 ...
- 20145324 Java实验四
在IDEA上操作 由于不会创建安卓模拟器失败 选择老师给的插件 成功 实验总结 开始开发安卓,感觉更难了,这次实验完全是看运气拼电脑的实验! 步骤 耗时 百分比 需求分析 10m 17% 设计 20m ...