-
2020-11-23 14:35:27
#encoding:utf-8
import requests
import psycopg2
import datetime
import re
from bs4 import BeautifulSoup
from apscheduler.schedulers.background import BackgroundScheduler
#获取最近七天天气预报方法
def weatherPrediction():
cityid = "57494"
urls = ["https://tianqi.2345.com/today-"+cityid+".htm",
"https://tianqi.2345.com/tomorrow-"+cityid+".htm",
"https://tianqi.2345.com/third-"+cityid+".htm",
"https://tianqi.2345.com/fourth-"+cityid+".htm",
"https://tianqi.2345.com/fifth-"+cityid+".htm",
"https://tianqi.2345.com/sixth-"+cityid+".htm",
"https://tianqi.2345.com/seventh-"+cityid+".htm"]
for url in urls:
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
nowDate = datetime.datetime.now() # 当前日期
weatherDate = ''
if "today" in url:
weatherDate = nowDate.strftime('%Y-%m-%d')
elif "tomorrow" in url:
weatherDate = (nowDate + datetime.timedelta(days=1)).strftime('%Y-%m-%d') # 明天
elif "third" in url:
weatherDate = (nowDate + datetime.timedelta(days=2)).strftime('%Y-%m-%d') # 第三天
elif "fourth" in url:
weatherDate = (nowDate + datetime.timedelta(days=3)).strftime('%Y-%m-%d') # 第四天
elif "fifth" in url:
weatherDate = (nowDate + datetime.timedelta(days=4)).strftime('%Y-%m-%d') # 第五天
elif "sixth" in url:
weatherDate = (nowDate + datetime.timedelta(days=5)).strftime('%Y-%m-%d') # 第六天
elif "seventh" in url:
weatherDate = (nowDate + datetime.timedelta(days=6)).strftime('%Y-%m-%d') # 第七天
# -----------------------------------------天气预报基本信息开始-----------------------------------------
tianqi_list = soup.find_all("span", class_="phrase")
day_tianqi = tianqi_list[0].getText()
night_tianqi = tianqi_list[1].getText() # 天气状况
tianqi = ''
if day_tianqi == night_tianqi:
tianqi = day_tianqi
else:
tianqi = day_tianqi + "~" + night_tianqi
temp_list = soup.find_all("span", class_="temperature")
day_temp = temp_list[0].getText()
night_temp = temp_list[1].getText()
max_temp = re.findall("\d+", day_temp)[0] # 最高温
min_temp = re.findall("\d+", night_temp)[0] # 最低温
# print(weatherDate +" 天气:" + tianqi +"," + " 最高温:" + max_temp + " , " + "最低温:"+min_temp)
# -----------------------------------------天气预报基本信息结束-----------------------------------------
# -----------------------------------------天气预报额外信息开始-----------------------------------------
other_list = soup.find_all("ul", class_="parameter")[0].contents
for other in other_list:
print(other.b.getText() + " : " + other.i.getText())
# -----------------------------------------天气预报额外信息结束-----------------------------------------
# -----------------------------------------每天定时更新天气预报信息-----------------------------------------
scherduler = BackgroundScheduler()
scherduler.add_job(weatherPrediction,'interval',minutes=2)
scherduler.start()
# ----------------------------------------爬虫获取失败的提醒机制,短信/邮件,以及切换api获取天气预报信息-----------------------------------------
更多相关内容 -
java调用中国天气网api获得天气预报信息的方法
2020-09-03 13:29:19主要介绍了java调用中国天气网api获得天气预报信息的方法,可实现调用温度、风力风向及近期天气状况等功能,具有一定参考借鉴价值,需要的朋友可以参考下 -
Android Studio实现天气预报APP
2021-08-12 21:32:43通过调用天气预报接口来获得天气数据,用LIstView和GridView来搭建每个界面,将查询的天气信息存储在SQLiteDatabase中。应用主要包括了五大界面,每一个界面上都会有很多组件: - 首页面:有各种组件装饰,显示天气... -
获得天气预报信息
2011-10-10 15:07:23这是一个能获得实时天气的小程序,并显示在控制台界面上。使用VC6.0开发。 -
java_java调用中国天气网api获得天气预报信息的方法,本文实例讲述了java调用中国天 - phpStudy
2021-02-28 14:16:46java调用中国天气网api获得天气预报信息的方法本文实例讲述了java调用中国天气网api获得天气预报信息的方法。分享给大家供大家参考。具体实现方法如下://以冰城哈尔滨为例通过中国天气api调用天气信息private ...java调用中国天气网api获得天气预报信息的方法
本文实例讲述了java调用中国天气网api获得天气预报信息的方法。分享给大家供大家参考。具体实现方法如下:
//以冰城哈尔滨为例通过中国天气api调用天气信息
private String getWeatherInfo2(){
StringBuilder info = new StringBuilder();
try {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httget = new HttpGet("http://m.weather.com.cn/data/101050101.html");
ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httget, responseHandler);
System.out.println(responseBody);
JsonParser jp = new JsonParser();
JsonElement jse = jp.parse(responseBody);
JsonObject jso = jse.getAsJsonObject().get("weatherinfo").getAsJsonObject();
// String updTime = jso.get("fchh").getAsString();
// if(updTime != null){
// //温度
// String j = jso.get("temp1").getAsString();//今天
// String m = jso.get("temp2").getAsString();//明天
// //天气情况
// String j_weather = jso.get("weather1").getAsString();//今天
// String m_weather = jso.get("weather2").getAsString();//明天
// //风向风力
// String j_wind = jso.get("wind1").getAsString();//今天
// String m_wind = jso.get("wind2").getAsString();//明天
// info.append("今天:").append(j).append(" ").append(j_weather).append(" ").append(j_wind).append("\n");
// info.append("明天:").append(m).append(" ").append(m_weather).append(" ").append(m_wind).append("\n");
// }
String updTime = jso.get("fchh").getAsString();
if(updTime != null){
if(!updTime.trim().equals("18")){
//温度
String j = jso.get("temp1").getAsString();//今天
String m = jso.get("temp2").getAsString();//明天
//天气情况
String j_weather = jso.get("weather1").getAsString();//今天
String m_weather = jso.get("weather2").getAsString();//明天
//风向风力
String j_wind = jso.get("wind1").getAsString();//今天
String m_wind = jso.get("wind2").getAsString();//明天
info.append("今天:").append(j).append(" ").append(j_weather).append(" ").append(j_wind).append("\n");
info.append("明天:").append(m).append(" ").append(m_weather).append(" ").append(m_wind).append("\n");
}else{
//18
//温度
String temp1 = jso.get("temp1").getAsString();//今天
String temp2 = jso.get("temp2").getAsString();//今天
String temp3 = jso.get("temp3").getAsString();//今天
String j = temp1.split("~")[1] + "~" + temp2.split("~")[0];
String m = temp2.split("~")[1] + "~" + temp3.split("~")[0];//明天
//天气情况
String weather1 = jso.get("weather1").getAsString();
String weather2 = jso.get("weather2").getAsString();
String weather3 = jso.get("weather3").getAsString();
String j_weather = "";
String j_weather_part1 = "";
String j_weather_part2 = "";
//判断是否有转
if(weather1.indexOf("转") > 0){
//有
j_weather_part1 = weather1.split("转")[1];
}else{
j_weather_part1 = weather1;
}
if(weather2.indexOf("转") > 0){
//有
j_weather_part2 = weather2.split("转")[0];
}else{
j_weather_part2 = weather2;
}
if(j_weather_part1.equalsIgnoreCase(j_weather_part2)){
j_weather = j_weather_part1;//今天
}else{
j_weather = j_weather_part1 + "转" + j_weather_part2;//今天
}
String m_weather = "";
String m_weather_part1 = "";
String m_weather_part2 = "";
//判断是否有转
if(weather2.indexOf("转") > 0){
//有
m_weather_part1 = weather2.split("转")[1];
}else{
m_weather_part1 = weather2;
}
if(weather3.indexOf("转") > 0){
//有
m_weather_part2 = weather3.split("转")[0];
}else{
m_weather_part2 = weather3;
}
if(m_weather_part1.equalsIgnoreCase(m_weather_part2)){
m_weather = m_weather_part1;//今天
}else{
m_weather = m_weather_part1 + "转" + m_weather_part2;//明天
}
//风向风力
String j_wind = jso.get("wind2").getAsString();//今天
String m_wind = jso.get("wind3").getAsString();//明天
info.append("今天:").append(j).append(" ").append(j_weather).append(" ").append(j_wind).append("\n");
info.append("明天:").append(m).append(" ").append(m_weather).append(" ").append(m_wind).append("\n");
}
}
} catch (Exception e) {
}
return info.toString();
}
希望本文所述对大家的java程序设计有所帮助。相关阅读:
html发送邮件通过Mailto简单实现
Win10 Mobile预览版10240模拟器上手演示视频
javascript使用appendChild追加节点实例
通过HTML5 Canvas API绘制弧线和圆形的教程
C++设计模式之中介者模式
php使用数组填充下拉列表框的方法
javascript数据结构与算法之检索算法
TextVie获取显示字符串的宽度之Android开发
Win10并非完全免费升级 企业版本仍需收费
2013年优秀jQuery插件整理小结
Win10系统为电源选项添加休眠的方法
CSS在固定宽高的div内实现垂直居中的实例详解
php使用explode()函数将字符串拆分成数组的方法
win10任务栏cortana选项怎么设置显示搜索框
-
ASP.net(c#)打造24小时天气预报及实时天气
2021-01-02 03:29:04本文详细介绍关于ASP.NET的实时天气及24小时天气预报 修改其中的url获得其他城市的天气情况的文章专题。 ASP.NET的实时天气及24小时天气预报(C#) 修改其中的url获得其他城市的天气情况 如广州为: ... -
ASP.NET获得天气预报信息
2009-09-16 10:18:27根据WebService服务获得天气预报信息 -
基于Android的天气预报课程设计源代码和开发文档.zip
2022-02-28 22:20:04本设计使用Android设计技术开发了一种运用在Android系统上的手机天气预报软件系统,本系统通过选择城市来获得天气,风向,风向,温度等信息。基于手机的天气预报系统软件可以使用户对于各地的天气情况的实时掌握,极... -
获取天气预报信息
2015-01-05 18:51:21获取天气预报信息,只适合初学者,有一定基础的同学不要下载此源代码 -
用Java实现全国天气预报的api接口调用示例
2020-09-01 11:08:41查询天气预报在APP中常用的一个常用功能,本文实例讲述了java调用中国天气网api获得天气预报信息的方法。分享给大家供大家参考。 -
天气预报:React.js天气预报应用程序,按位置搜索,并查看每周天气预报的更多详细信息
2021-02-10 12:43:45它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 最小化构建,文件名包含哈希。 您的应用已准备好进行部署! 有关更多信息,请参见有关的部分。 npm run eject 注意:这是单向操作。 eject ,您将... -
mui+echart+天气预报
2017-10-04 17:13:05跨域得到天气预报信息,然后利用 mui+echart+天气预报 -
从新浪服务器获得天气情况的天气预报
2013-06-18 10:12:32这个天气预报应用是从新浪天气服务器里获得的天气情况.定位功能是网络定位.没有用到GPS.代码相对简单,对于初学者还是不错的. -
基于Android天气预报APP设计与实现 .doc
2020-01-21 09:15:57为了方便人们用智能手机查看天气预报信息,在Android平台下设计并实现了天气预报客户端的开发,主要包括获取到地理位置的经纬度转换城市、天气预报JSON文档的获取与解析、天气预报信息在Android 平台上的呈现等技术... -
Python天气预报采集器实现代码(网页爬虫)
2020-12-25 10:46:47爬虫简单说来包括两个步骤:获得网页文本、过滤得到数据。 1、获得html文本。 python在获取html方面十分方便,寥寥数行代码就可以实现我们需要的功能。 复制代码 代码如下: def getHtml(url): page = urllib.urlopen... -
android城市适时天气预报程序
2021-03-16 20:30:55摘要:Java源码,Android源码,天气预报 一个android手机城市适时天气预报程序的源码,可显示当前的实时天气信息,包括风向、风力、温度、建议等,还可显示后四天的天气信息,设置实时天气信息的对象,得到最后一个... -
55-html显示天气预报信息
2021-06-11 08:43:43由于网站自身功能的需要就开始查询天气预报的相关资料,在百度搜索框中输入 java web 天气预报貌似没有结果,于是就搜索视频进行学习,但是搜索的视频都是牛头不对马尾的。于是就到百度贴吧里面提问,吧友给说是用...由于网站自身功能的需要就开始查询天气预报的相关资料,
在百度搜索框中输入 java web 天气预报
貌似没有结果,于是就搜索视频进行学习,但是搜索的视频都是牛头不对马尾的。
于是就到百度贴吧里面提问,吧友给说是用web service 进行调用,
但是弄了半天还是不懂,所以就到开源中国讨论区进行提问,
提问没有一会儿,一个朋友给我留言说是用不了这么麻烦,直接到心知天气这个网站就行了,
也没有给我说什么具体的操作的步骤,就是给了我一个网址,我就点击了一下这个网址,一看,有三个超级大的按钮,
我就选择了API的那个,但是研究了半天貌似好像要钱,就回复了那个朋友,说是要收费,在等待的同时继续在这个网站里面游荡着,突然我点击到了获取插件的那个按钮上面,然后就看到一个十分清晰的获取流程,马上就能明白是什么意思,所以就选择并且设置完自己想要的那个天气预报的样式,复制代码,粘贴到自己网页中需要用到的地方发,反复调整了一下,感觉挺好的,就用了。
感觉这个插件超级的好用,而且使用的时候非常的简单,没有什么其他的获取接口什么的代码,只是通过界面的形式设置天气预报的样式,
然后直接获取一个iframe的代码就成功了!
通过这个学习的过程,让我知道了在贴吧,或者是在开源中国中提问能更快的获得学习的方法,效率也是比较高的。
自己搜索往往效率不怎么高,通过其他人的指点,自己能更好的找到答案。
心知天气
然后点击获取网页插件,然后获取iframe代码,粘贴到html页面中合适的位置即可。
-
安卓天气预报
2017-11-09 09:55:26能够实现按照点击地区查询天气信息。但是时间久了接口有可能会过期。其中获得未来天气类有一些小的bug。 -
全国天气预报信息 API 接口
2021-03-09 11:12:16全国天气预报信息 API 接口 精确到行政区的7日天气预报。 1. 产品功能 全国天气预报每隔 6 小时更新数据; 精确到行政区级别的天气预报数据; 提供最长 7 天的天气预报数据; 提供每日小时级别的天气预报数据; ...全国天气预报信息 API 接口
精确到行政区的7日天气预报。
1. 产品功能
- 全国天气预报每隔 6 小时更新数据;
- 精确到行政区级别的天气预报数据;
- 提供最长 7 天的天气预报数据;
- 提供每日小时级别的天气预报数据;
- 提供本地日出日落、当日历史温度等附加数据;
- 提供紫外线、穿衣、洗车、空气污染等额外指导数据;
- 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3);
- 全面兼容 Apple ATS;
- 全国多节点 CDN 部署;
- 接口极速响应,多台服务器构建 API 接口负载均衡。
2. API 文档
API 详情地址: https://www.gugudata.com/api/details/weatherinfo
接口请求地址: https://api.gugudata.com/weather/weatherinfo
返回格式: application/json; charset=utf-8
请求方式: GET
请求协议: HTTPS
请求示例: https://api.gugudata.com/weather/weatherinfo?appkey=YOUR_APPKEY&code=YOUR_VALUE&days=1
接口测试: https://api.gugudata.com/weather/weatherinfo/demo
前置接口
前置接口说明: 查询地区编码,根据市或区的关键字进行查询,如北京、苏州、海淀、吴中等
前置接口地址: https://api.gugudata.com/weather/weatherinfo/region?appkey=APPKEY&keyword=查询编码的市或区关键字,如北京、海淀
前置接口参数说明: appkey=YOUR_APPKEY&keyword=查询编码的市或区关键字,如北京、海淀
前置接口返回格式: application/json; charset=utf-8
前置接口返回说明: 包含地区编码以及省、市、区相关信息
前置接口请求方式: GET
前置接口请求协议: HTTPS
3. 请求参数(如果为 POST 请求,那么参数以 JSON 的格式传递)
参数名 参数类型 是否必须 默认值 备注 appkey string 是 YOUR_APPKEY 付费后获取的 APPKEY code string 是 YOUR_VALUE 获取天气预报信息的地区编码,可通过前置接口查询获得 days int 否 1 获取天气预报的天数,默认为1,即为当天数据。最大值为7。 4. 返回参数
参数名 参数类型 备注 DataStatus.StatusCode int 接口返回状态码 DataStatus.StatusDescription string 接口返回状态说明 DataStatus.ResponseDateTime string 接口数据返回时间 DataStatus.DataTotalCount int 此条件下的总数据量 Data.Code string 地区编码 Data.WeatherDate string 天气预报的日期 Data.WeatherRegion object 当前天气预报的详细地区信息,数据格式与查询地区编码接口返回数据格式一致。 Data.WeatherRegion.ReginType string 位置信息类型,2为市级别数据,3为区级别数据 Data.WeatherRegion.Code string 地区完整编码 Data.WeatherRegion.ProvinceCode string 省编码 Data.WeatherRegion.ProvinceName string 省名称 Data.WeatherRegion.CityCode string 市编码 Data.WeatherRegion.CityName string 市名称 Data.WeatherRegion.RegionCode string 区编码 Data.WeatherRegion.RegionName string 区名称 Data.WeatherRegion.TownCode string 镇编码 Data.WeatherRegion.TownName string 镇名称 Data.WeatherInfo string 天气情况 Data.TemperatureHigh int 最高温度 Data.TemperatureLow int 最低温度 Data.TodayHistoryHighestTemperature int 当日历史最高温度 Data.TodayHistoryLowestTemperature int 当日历史最低温度 Data.WeatherWindCondition1 string 风向1 Data.WeatherWindCondition2 string 风向2 Data.WeatherWindLevel string 风级 Data.SunRiseTime string 日出时间 Data.SunSetTime string 日落时间 Data.WeatherPerHour array 当日小时级别的天气预报数据数组 Data.WeatherPerHour.WeatherTime string 预报的小时时间,24小时制 Data.WeatherPerHour.WeatherInfo string 天气情况 Data.WeatherPerHour.Temperature string 温度 Data.WeatherPerHour.WeatherWindCondition string 风向 Data.WeatherPerHour.WeatherWindLevel string 风级 Data.LifeHelperUV object UV指数 Data.LifeHelperWear object 穿衣指数 Data.LifeHelperWashCar object 洗车指数 Data.LifeHelperAir object 空气指数 Data.LifeHelper.HelperName string 指数名称 Data.LifeHelper.HelperStatus string 指数状态 Data.LifeHelper.HelperValue string 指数值。总分:紫外线5分,穿衣7分,洗车4分,空气5分 Data.LifeHelper.HelperContent string 指数内容 Data.WeatherDataGenerateDateTime string 天气预报内容数据生成时间 5. 接口响应状态码
错误码 错误内容 备注 100 正常返回 101 参数错误 102 请求频率受限 每秒请求不能超过 100 次 103 账号欠费 104 APPKEY 错误 请检查传递的 APPKEY 是否为开发者中心获取到的值 110 接口响应错误 6. 开发语言请求示例代码
示例代码包含的开发语言:C#, Go, Java, jQuery, Node.js, Objective-C, PHP, Python, Ruby, Swift 等,其他语言进行对应的 RESTful API 请求实现即可。
咕咕数据,专业的数据提供商,提供专业全面的数据接口、商业数据分析,让数据成为您的生产原料。
咕咕数据基于我们五年来为企业客户提供的海量数据支撑,将部分通用数据、通用功能抽象成产品级 API,大大满足了用户在产品开发过程中对基础数据的需求,同时降低了复杂功能的实现门槛与人力成本。
除了我们已开放的分类数据与接口外,还有海量数据正在整理、清洗、整合、构建中,后期会开放更多的数据与云端功能接口供用户使用。
目前已开放的数据接口 API
- [条码工具] 通用二维码生成
- [条码工具] Wi-Fi 无线网二维码生成
- [条码工具] 通用条形码生成
- [图像识别] 通用 OCR
- [区域/坐标] 全国大学高校基础信息
- [区域/坐标] 地理坐标逆编码
- [区域/坐标] IP地址定位
- [区域/坐标] 全国省市区街道区域信息
- [区域/坐标] 地理坐标系转换
- [元数据/字典] 历年高考省录取分数线
- [元数据/字典] 历年高考高校录取分数线
- [新闻/资讯] 软件开发技术博文头条
- [新闻/资讯] 获取任意链接文章正文
- [新闻/资讯] 公众号头条文章
- [新闻/资讯] 获取任意链接正文图片
- [新闻/资讯] 获取公众号文章封面
- [新闻/资讯] 幽默笑话大全
- [短信/语音] 手机归属地查询
- [文字/文本] 中文文本分词
- [文字/文本] 中英文排版规范化
- [文字/文本] 百万中国对联数据
- [文字/文本] 简体繁体互转
- [文字/文本] 唐诗宋词大全
- [天气/空气质量] 全国天气预报信息
- [网站工具] 获取任意站点标题与图标
- [股票行情] 美股历史行情数据
- [股票行情] 港股历史行情数据
- [体育/比赛] 历年奥运比赛数据
-
java 获得天气预报信息
2015-04-26 21:46:56java 获得天气预报信息 最近项目中需要增加天气预报功能,网上给的资料有很多缺陷比如 1. 有些小网站提供的webservers本身就不稳定不能长期使用。 2. 还有一些网站限制访问次数。 3. 再有就是花钱买服务。 ... -
基于Java的简易天气预报
2019-11-13 13:12:27基于Java实现的简易天气预报,实现平台为Android Studio,模型为mvc,接口获取解析格式为xml,功能:一、选择城市(包括获得其中数据库中城市代码信息) 二、更新信息 三、更新六日信息 -
Android 天气预报
2018-12-05 09:15:00基础功能: 1、 PULL解析获得天气信息。...3、 点击屏幕上方的下拉菜单会显示WeatherWebService网站所提供天气预报的所有城市名,点击任意一个城市,就会在屏幕上显示当天、昨天和明天的天气信息。 -
java获取天气预报信息
2021-03-15 15:20:41免费接口: ... } } 所需要的maven包如下 org.apache.httpcomponents httpclient 4.5.2 至此,就可以获取从该接口返回的JSON格式的天气信息了 -
JS获取天气预报信息,内附获取当前位置ip地址和获取天气预报信息两个API接口
2019-08-01 23:29:44以上我们就可以获取我们当前地区的天气预报信息和切换地区后更新天气预报信息,主要涉及到同源策略和跨域的问题,当遇到不同源的url时,我们可以通过jQuery的$.ajax方法的dataType属性设置为jsonp的形式,可以实现不...