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 (2)
Oct 31 Python
python脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
Python实现购物车程序
Apr 16 Python
python字符串string的内置方法实例详解
May 14 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
python绘制漏斗图步骤详解
Mar 04 Python
Django中的静态文件管理过程解析
Aug 01 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Python中Subprocess的不同函数解析
Dec 10 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
基于Python实现天天酷跑功能
Jan 06 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 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读取3389的脚本
2014/05/06 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
使用axios实现上传图片进度条功能
2017/12/21 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
Linux 修改Python命令的方法示例
2018/12/03 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python 追踪except信息方式
2020/04/25 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
通用的Django注册功能模块实现方法
2021/02/05 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
Joules美国官网:出色的英国风格
2017/10/30 全球购物
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
商务日语专业的自荐信
2014/05/23 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
幼师辞职信范文
2015/02/27 职场文书
初中数学教学反思范文
2016/02/17 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
Python语言内置数据类型
2022/02/24 Python
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript