Python爬虫实例扒取2345天气预报


Posted in Python onMarch 04, 2018

寒假里学习了一下Python爬虫,使用最简单的方法扒取需要的天气数据,对,没听错,最简单的方法。甚至没有一个函数封装。。

网址:http://tianqi.2345.com/wea_history/53892.htm

火狐中右键查看网页源代码,没有发现天气数据,因此推断网页采用的json格式数据。

右击->查看元素->网络->JS,找到了位置

Python爬虫实例扒取2345天气预报

用Python爬虫下载为json格式数据存储下来,代码如下:

#-*- coding:utf-8 -*- 
import urllib2 
import json 
 
months = [1,2,3,4,5,6,7,8,9,10,11,12] 
years = [2011,2012,2013,2014,2015,2016] 
city = [53892]  #邯郸代码53892 
 
for y in years: 
  for m in months: 
    for c in city: 
      url = "http://tianqi.2345.com/t/wea_history/js/"+str(c)+"_"+str(y)+str(m)+".js?qq-pf-to=pcqq.c2c" 
      print url 
      html = urllib2.urlopen(url) 
      srcData = html.read() 
      #JsonData = json.loads(srcData) 
      file = open("d:/json/"+str(c)+"handan/weather"+str(c)+"_"+str(y)+str(m)+".json","w") 
      file.write(srcData) 
      file.close()
扒取存到本地:

因为是刚学,学一点就动手实践了一下,还没有学到json的转换,直接使用的正则匹配,提取json中的数据,直接打印

提取转换json文件中的数据Python代码:

#-*- coding:utf-8 -*- 
import json 
import re 
import time 
 
Year = [2014] 
Month = [1] 
 
for y in Year: 
  for m in Month: 
     
    """ 
    2016年2月15日终于改成功。 
    是因为正则匹配后的编码问题,导致输出时无法显示。 
    在每个正则匹配的元组后添加 .decode('gbk').encode('utf-8'),成功输出 
    """ 
    content = fRead.read() 
    pattern = re.compile('{ymd:\'(.*?)\',bWendu:\'(.*?)\',yWendu:\'(.*?)\',tianqi:\'(.*?)\',fengxiang:\'(.*?)\',fengli:\'(.*?)\'},',re.S) 
    items = re.findall(pattern,content) 
    for item in items: 
      print item[0].decode('gbk').encode('utf-8'),","+item[1].decode('gbk').encode('utf-8'),","+item[2].decode('gbk').encode('utf-8'),","+item[3].decode('gbk').encode('utf-8'),","+item[4].decode('gbk').encode('utf-8'),","+item[5].decode('gbk').encode('utf-8') 
      time.sleep(0.1) 
 
    fRead.close()

使用Sublime Text 3运行

使用正则处理的一大问题就是,格式不整齐,总会漏掉一些数据。可能是由于匹配的速度过快导致部分数据缺失,但是通过time.sleep() 睡眠依旧不能解决问题。

由此可以看出正则匹配时的缺陷,待以后使用Python中专门用于处理json数据的包以后,再重新试一下

Python 相关文章推荐
Python如何判断数独是否合法
Sep 08 Python
python实现的AES双向对称加密解密与用法分析
May 02 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
python3+selenium自动化测试框架详解
Mar 17 Python
python支付宝支付示例详解
Aug 22 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
Python实现一个简单的递归下降分析器
Aug 01 Python
如何在Python中创建二叉树
Mar 30 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 #Python
浅析python实现scrapy定时执行爬虫
Mar 04 #Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 #Python
Python爬虫框架Scrapy实例代码
Mar 04 #Python
详解python中asyncio模块
Mar 03 #Python
python3.6+django2.0开发一套学员管理系统
Mar 03 #Python
python爬虫面试宝典(常见问题)
Mar 02 #Python
You might like
PHP积分兑换接口实例
2015/02/09 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
2017/10/26 jQuery
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
Python最长公共子串算法实例
2015/03/07 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
通过代码实例了解Python异常本质
2020/09/16 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
水果连锁超市创业计划书
2014/01/24 职场文书
致跳远运动员加油稿
2014/02/11 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
辞职信如何写
2015/02/27 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python