以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢。为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取最新的天气情况并生成静态JS供网站调用。由于初学python,程序有些地方写得不是很优雅,还望高手指正。

代码如下:

#!/usr/bin/env python

#coding:UTF-8

import urllib,os,datetime

def GetWeather(cityid):

"获取指定城市的天气情况"

#http://www.weather.com.cn/data/cityinfo/101110301.html

#{"weatherinfo":{"city":"延 长","cityid":"101110301","temp1":"31℃","temp2":"18℃","weather":"多 云","img1":"d1.gif","img2":"n1.gif","ptime":"08:00"}}

url="http://www.weather.com.cn/data/cityinfo/"+cityid+".html"

Result=""

try:

web=urllib.urlopen(url)

content=web.read().decode('utf-8').replace('"',"")

except Exception,e:

Result="error"

if content.find("{weatherinfo") >=0:

Items=content.replace("{weatherinfo:{","").replace("}}","").split(",")

if len(Items)>=8:

Result=""+Items[0].split(":")[1]+" "+Items[4].split(":")[1]+" "+Items[2].split(":")[1]+" / "+Items[3].split(":")[1]+"

"+"

"

return Result

def CreateJS(FileName,Content):

if len(Content)>10:

now=datetime.datetime.now()

try:

fp=open(FileName,'w')

fp.write('document.write("'+Content.encode("utf-8")+'");\n')

fp.write('//'+now.strftime('%Y-%m-%d %H:%M:%S')+'\n')

fp.close()

except IOError:

print "ioerror"

if __name__ == "__main__":

Wcont=GetWeather("101110301")

#print Wcont

CreateJS("/weather.js",Wcont)

注:

1、城市代码可以到中国天气网上去查。

2、天气图标也可以在中国天气网的图标示例里去获取,这里就不提供了。

3、有同学表示,天气网的插件不是支持延后加载吗?嗯,是这样的。经本人实测在有些手机浏览器上会导致整个页面变空白,问题已提交给官方。

基于python的天气预报系统,基于python编写的天气抓取程序相关推荐

  1. 基于树莓派的追光系统(python)

    目录 前言 一.材料 二.硬件--控制逻辑 1.主设备的准备 1.启用树莓派的i2c设备 2.安装python-smbus 2.从设备的准备 1.BH1750 2.L298N驱动芯片 3.云台的准备 ...

  2. python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...

    原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...

  3. 「docker实战篇」python的docker-打造多任务端app应用数据抓取系统(下)(35)

    上次已经把python文件挂载到虚拟机上了,这次主要设置下虚拟机通过docker容器的方式. 运行 python 代码运行 >启动一个crt的会话 docker run -it -v /root ...

  4. python编写微信自动抓取文件经历

    python编写微信自动抓取文件经历 背景 前期 写代码&坑 背景 近期疫情肆虐,老师全都线上教学,微信群里多出来一大堆乱七八糟的文件,烦死宝宝了,每次还要看,要是doc还得转换成pdf再放进 ...

  5. 【实战+源码】基于RGB-D(深度视觉)的具有机械臂抓取功能的自主规划移动服务机器人的设计与实现(一)——准备工作

    目录 一,实物or仿真 1,实物或仿真的利弊 2,从哪些角度去考虑是选择实物还是仿真 二,环境准备 1,首推ROS 2,其他环境 三,理论学习 四,实物搭建 一,实物or仿真 我想这个问题是在开发之前 ...

  6. 分享:Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据

    Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据 http://my.oschina.net/leopardsaga/blog/94774

  7. 不会 Python 没关系,手把手教你用 web scraper 抓取豆瓣电影 top 250 和 b 站排行榜

    苏生不惑第190 篇原创文章,将本公众号设为 星标 ,第一时间看最新文章. 关于Python之前分享过很多文章了: Python 抓取知乎电影话题下万千网友推荐的电影,这个国庆节不愁没电影看了 王菲k ...

  8. python爬虫成长之路(一):抓取证券之星的股票数据

    python爬虫成长之路(一):抓取证券之星的股票数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇 ...

  9. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

最新文章

  1. windows常用命令有哪些(整理)
  2. source insight 注释乱码?(【File】 > 【Reload As Encoding…】 > 【Chinese Simplified (GB18030)】 > 选择后,点击load)
  3. ExtJs CheckboxSelectionModel 全选操作后 清空表格头的checkBox
  4. 2压缩备份数据库_达梦数据库备份与还原
  5. JavaScriptjQuery.检测相等和存在
  6. jaxl php,php – jaxl无法连接到Prosody
  7. Rockchip平台DDR调试排查手段
  8. Image Processing in the Spatial Domain 空间域图像处理
  9. 五狂徒盖伦过来插眼 准备边学边写 Egret 游戏
  10. Pytorch项目(1)| 预测泰坦尼克号船上的生存乘客
  11. #1.从学生表中查询所有学生的所有信息SELECT * FROM `student`#2.从学生表查询所有学生的学号姓名信息并分别赋予别名SELECT StudentNo AS ‘学号‘, St
  12. Nat Nanotechnol | 朱涛/陈春英等合作发现碳纳米管呼吸暴露后的延迟毒性导致小鼠原位乳腺肿瘤的多发性广泛转移...
  13. 计算机能够快速准确,计算机操作练习题
  14. office Excel 加载加载项时出错 解决办法
  15. oracle exp导出表where,oracle EXP导出一张表时使用query参数指定where条件
  16. k590s刷bios
  17. ADSL接入网的结构和工作方式
  18. 关于uni-app的资源热更新!!!
  19. MySQL日记——索引优化
  20. Ubuntu+openni+nite+sensor+配置

热门文章

  1. 数据分析系列:绘制散点图(matplotlib)
  2. Cracer渗透视频课程学习笔记——基础知识(1)
  3. 【LeetCode从零单排】No.160 Intersection of Two Linked Lists
  4. 用python+flask自己制作api(教程附源码)
  5. spring-session用mysql实现session共享实践
  6. 数学建模学习笔记——数学规划
  7. 数学建模学习笔记——优劣解距离法(评价类)
  8. 图片相似度识别_deepface:人脸识别\特征分析
  9. vue实战第一课:天气查询
  10. 规则引擎选型及应用 邴越 2017-04-27 16:31:17 浏览614 评论0 HTTPS 模块 配置 string exception void input 规则引擎 摘要: 规则引擎具体执