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

 更新时间:2018年03月04日 14:17:52   作者:BieberSen  
本篇文章给大家详细分析了通过Python爬虫如何采集到2345的天气预报信息,有兴趣的朋友参考学习下吧。

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

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

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

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

用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数据的包以后,再重新试一下

相关文章

  • 解决Tensorboard 不显示计算图graph的问题

    解决Tensorboard 不显示计算图graph的问题

    今天小编就为大家分享一篇解决Tensorboard 不显示计算图graph的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 如何使用python操作vmware

    如何使用python操作vmware

    这篇文章主要介绍了如何使用python操作vmware,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Django提示mysql版本过低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).的解决方法

    Django提示mysql版本过低:django.db.utils.NotSupportedError: My

    这篇文章主要介绍了Django提示mysql版本过低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).的解决方法,文中有详细的解决方案,具有一定的参考价值,需要的朋友可以参考下
    2024-03-03
  • 解决Python print输出不换行没空格的问题

    解决Python print输出不换行没空格的问题

    今天小编就为大家分享一篇解决Python print输出不换行没空格的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 远程部署工具Fabric详解(支持Python3)

    远程部署工具Fabric详解(支持Python3)

    这篇文章主要介绍了远程部署神器 Fabric,支持Python3 ,Fabric 出场了。Fabric 是一个远程部署神器,它可以在本地执行远程服务器的命令。,需要的朋友可以参考下
    2019-07-07
  • python 常见字符串与函数的用法详解

    python 常见字符串与函数的用法详解

    这篇文章主要介绍了python 常见字符串与函数的用法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • 使用Django和Python创建Json response的方法

    使用Django和Python创建Json response的方法

    下面小编就为大家分享一篇使用Django和Python创建Json response的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • python数据挖掘需要学的内容

    python数据挖掘需要学的内容

    在本篇文章中我们给大家整理了关于python数据挖掘需要学什么的知识点指南,有兴趣的朋友们跟着参考下。
    2019-06-06
  • Python itertools模块详解

    Python itertools模块详解

    这篇文章主要介绍了Python itertools模块详解,本文基本是基于文档的翻译和补充,相当于翻译了,需要的朋友可以参考下
    2015-05-05
  • python实现分页效果

    python实现分页效果

    这篇文章主要为大家详细介绍了python实现分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论