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基于queue和threading实现多线程下载实例
Oct 08 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
Python3中列表list合并的四种方法
Apr 19 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
关于Python-faker的函数效果一览
Nov 28 Python
pytorch 实现打印模型的参数值
Dec 30 Python
Django+Django-Celery+Celery的整合实战
Jan 20 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
解析wamp5下虚拟机配置文档
2013/06/27 PHP
php实现天干地支计算器示例
2014/03/14 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
2015/04/12 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
python获取本机外网ip的方法
2015/04/15 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python实现八大排序算法(2)
2017/09/14 Python
Python应用库大全总结
2018/05/30 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
服务行业个人求职的自我评价
2013/12/12 职场文书
管理标语大全
2014/06/24 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
食堂卫生管理制度
2015/08/04 职场文书
Python爬虫基础初探selenium
2021/05/31 Python
Fluentd搭建日志收集服务
2022/09/23 Servers