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

作者:BieberSen 时间:2021-09-27 22:38:12 

寒假里学习了一下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数据的包以后,再重新试一下

来源:http://blog.csdn.net/BieberSen/article/details/50767095

标签:Python爬虫,天气预报
0
投稿

猜你喜欢

  • ASP无组件上载,带进度条,多文件上载

    2008-10-29 10:03:00
  • Python语言实现二分法查找

    2021-12-01 18:39:49
  • 基于Python实现开心消消乐小游戏的示例代码

    2022-03-20 13:19:10
  • 页面中 CSS 加载方式的优化

    2008-03-26 12:36:00
  • pygame游戏之旅 添加游戏介绍

    2022-12-03 09:13:08
  • Python如何基于smtplib发不同格式的邮件

    2023-10-03 10:28:35
  • MySQL的一些安全注意点

    2008-12-24 16:29:00
  • Python+matplotlib实现堆叠图的绘制

    2023-07-21 17:38:35
  • Django 创建新App及其常用命令的实现方法

    2023-05-20 09:04:47
  • python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析

    2022-12-17 22:26:30
  • 关于Python错误重试方法总结

    2023-05-10 23:42:09
  • JavaScript Dom编程:介绍学习书籍

    2008-02-20 08:32:00
  • Python项目文件中安装 setup.py的步骤

    2023-10-24 15:06:01
  • 动态导航设计

    2008-09-21 13:40:00
  • 关于AJAX缓存数据

    2008-03-26 12:11:00
  • 总结Python编程中函数的使用要点

    2021-03-15 01:49:52
  • PyTorch中topk函数的用法详解

    2022-11-08 13:55:52
  • Python采用Django制作简易的知乎日报API

    2023-10-07 13:02:34
  • asp如何实现强制登录注册?

    2010-05-24 18:13:00
  • MYSQL中怎样设列的默认值为Now()的介绍

    2008-11-01 16:54:00
  • asp之家 网络编程 m.aspxhome.com