爬取某地全年天气信息
时间:2020-04-11
本文章向大家介绍爬取某地全年天气信息,主要包括爬取某地全年天气信息使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
所用代码是根据一位博主的代码修改的,想看具体的原理可以通过下面地址。
原博主参考代码地址
# -*- coding: utf-8 -*-
"""
Created on Sat Apr 11 13:36:42 2020
@author: ZAN
"""
import requests
import json
import pandas as pd
import re
# from bs4 import BeautifulSoup
headers = {}
headers['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36' #http头大小写不敏感
headers['accept'] = '*/*'
headers['Connection'] = 'keep-alive'
headers['Pragma'] = 'no-cache'
result = []
for date in range (0,12):
url = "http://tianqi.2345.com/t/wea_history/js/"+str(date+201601)+"/57447_"+str(date+201601)+".js" # 57447 ,代表恩施
res = requests.get(url)
a=res.text
data=json.dumps(a, indent=2,ensure_ascii=False)
#print(data[17:])
b=a.split('[')
#print(a)
#print(b[1])
c=b[1].replace('"','')
#d=c.split(',')
#e=str(d).split("{")
#print(e)
f=re.findall(r'\{(.*?)\}', str(c))
#g=re.findall(r'\{(.*?)\}', str(f))
#print(f[:])
tianqi=[]
for i in f[:-1]:
i={i.replace("'",'')}
xx= re.sub("[A-Za-z\!\%\[\]\,\。]", " ", str(i))
yy=xx.split(' ')
#print(yy)
tianqi.append([data[24:26], yy[3][1:], yy[10][1:-1], yy[17][1:-1], yy[24][1:], yy[34][1:],yy[41][1:], yy[45][1:],yy[53][1:]])
#print(tianqi)
result = result + tianqi
#print('日期 最高气温 最低气温 天气 风向风力 空气质量指数')
# print(tianqi)
weather=pd.DataFrame(result)
weather.to_csv(str(data[24:26])+'.csv',encoding="utf_8_sig")
主要就是把原代码中url中的日期参数改用变量替代了,用for循环抓取12个月的数据,通过list合并后再转成dateframe格式。有需要的小伙伴可以直接拿去用,只用把代表地点的参数和日期参数改下就可以用了。想知道轮子咋造的可以看原博主的文章,链接在文首。
原文地址:https://www.cnblogs.com/wangzan/p/12679509.html
- 微信发布了小游戏,这一次腾讯 vs 世界
- .Net 转战 Android 4.4 日常笔记(5)--新软件Android Studio 0.5.8安装与配置及问题解决
- 第2章 对象激活上下文-对象激活
- .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
- .Net 转战 Android 4.4 日常笔记(3)--目录结构分析
- .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
- 读书笔记(二)对象激活和上下文
- 程序员的噩梦有哪些?除了改需求,还有这些…
- UC Berkeley提出新型分布式执行框架Ray:有望取代Spark
- 卡奇话爬虫使用方法以及下载地址
- flash读取XML 背景自动适应大小
- 记录一个发邮件的cs文件
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox
- xml-rpc(2)-first demo_v2
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 偿还技术债(3)-ARouter源码详解
- 偿还技术债(4)-ARouter自己实现一个?
- 偿还技术债(5)-LeakCanary源码详解
- 数据库PostrageSQL-服务器配置(查询规划)
- 别在折腾开发环境了,一劳永逸的 Python 环境搭建方法
- 快速入门Python文件操作
- 使用PyTorch构建的“感知器”网络
- Python 经典面试题 一
- Python 经典面试题 二
- Linux磁盘管理之LVM快速入门配置
- 你熟悉Python的代码规范吗?如何一键实现代码排版
- Deepin安装与基础使用
- Golang 单元测试详尽指引
- Pigeon- Flutter多端接口一致性以及规范化管理实践
- Linux之PAM系统模块详解说明