近期忙里偷闲,搞了几天python爬虫,基本可以实现常规网络数据的爬取,比如糗事百科、豆瓣影评、NBA数据、股票数据、天气预报等的爬取,整体过程其实比较简单,有一些HTML+CSS+DOM树等知识就很easy,我就以天气预报数据的爬取为例,整理出来。

需求:采用python爬取“天气网”指定时间段及地区的天气预报数据,并将爬取到的数据按顺序写入到本地EXCEL文件中。

环境配置:

python3.5

win7 64位

pandas(生成时间序列用到)

urllib(获取html)

BeautifulSoup(解析html)

xlsxwriter(写入到excel)

话不多说,直接干。。。

1、用到的库

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import datetime

import pandas as pd

import xlsxwriter as xlw

from urllib import request

from bs4 import BeautifulSoup as bs

2、两种生成月份区间的方法

# 法一:datetime,先转换为datetime类型,再做加减

def dateRange(start, end): # start='2014-09'

strptime, strftime = datetime.datetime.strptime, datetime.datetime.strftime

days = (strptime(end, "%Y-%m") - strptime(start, "%Y-%m")).days

datelist1 = [strftime(strptime(start, "%Y-%m") + datetime.timedelta(i), "%Y%m") for i in range(0, days, 1)]

datelist = sorted(list(set(datelist1)))

return datelist

# 法二:pandas产生时间序列

def dateRange1(start, end):

datelist1 = [datetime.datetime.strftime(x, '%Y%m') for x in list(pd.date_range(start=start, end=end))]

datelist = sorted(list(set(datelist1)))

return datelist

3、爬取天气网数据

需要注意对None值的处理,如果为None,则写入到本地excel中会出错,因为写入的时候默认为str类型,因此,代码中对None值先做判断,然后字符串处理。

# 爬取“天气网”天气预报

def getCommentsById(city, start, end): # city为字符串,year为列表,month为列表

weather_result = []

datelist = dateRange(start, end)

for i in datelist:

url = 'http://lishi.tianqi.com/' + city + '/' + i + '.html'

opener = request.Request(url)

opener.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')

req = request.urlopen(opener).read()

soup = bs(req, 'html.parser')

weather_m = soup.select('div .tqtongji2 > ul') # .表示class; ‘#tongji’表示id等价于a[id='tongji']

for i in weather_m[1:]: # 因为第一个为表头,所以筛除掉

tt = []

for j in range(6):

t = i.find_all('li')[j].string

if t is not None: # 存在None值的进行处理,否则不能写入到excel

tt.append(t)

else:

tt.append('None')

weather_result.append(tt)

return weather_result

4、将爬取到的数据写入到本地excel

xlsxwriter库负责将数据写入到excel中,效率非常高,支持流式写入,缓解内存效率不足。

# list数据写入到本地excel中

def list_to_excel(weather_result, filename):

workbook = xlw.Workbook('E:\%s.xlsx' % filename)

sheet = workbook.add_worksheet('weather_report')

title = ['日期', '最高气温', '最低气温', '天气', '风向', '风力']

for i in range(len(title)):

sheet.write_string(0, i, title[i], workbook.add_format({'bold': True})) # 写入表头,字体加粗

row, col = 1, 0

for a, b, c, d, e, f in weather_result:

sheet.write_string(row, col, a)

sheet.write_string(row, col + 1, b)

sheet.write_string(row, col + 2, c)

sheet.write_string(row, col + 3, d)

sheet.write_string(row, col + 4, e)

sheet.write_string(row, col + 5, f)

row += 1

workbook.close()

5、大功告成,直接去E盘查看

if __name__ == '__main__':

data = getCommentsById('jinan', '2016-05', '2017-07')

list_to_excel(data, '济南天气201605-201707')

脚注

若有错误,请指正交流。

蹄疾步稳,贴地而行,以行践言!—zlg358 2017/8/23凌晨

python爬取天气数据山东_Python爬取天气预报数据,并存入到本地EXCEL中-Go语言中文社区...相关推荐

  1. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...

    利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...

  2. python社区微信群_Python 打造微信群聊天机器人(带操作界面)-Go语言中文社区...

    前言 这几天我的一个小伙伴问我能不能给 Ta 做一个配置灵活的微信群聊天机器人,之前了解过 itchat 库的使用,我就爽快的答应了,花了一个晚上,终于做出了雏形. 电脑上运行程序如下: 手机上的信息 ...

  3. python中文相似度_python 人脸对比--百度API人脸相似度识别(超简单)-Go语言中文社区...

    说明:这篇是写使用百度人脸识别API进行人脸相似度识别对比,如 给两个人物照片,判断是否是同一个人.简单的4步完成. 1,获取百度人脸识别API的API Key和Secret Key.(10分钟内完成 ...

  4. python调用metasploit自动攻击_Python脚本与Metasploit交互进行自动永恒之蓝攻击-Go语言中文社区...

    我们首先利用 findTarget() 函数找到目标网段或目标主机中开放了445端口的主机,然后利用 confickerExploit() 函数将攻击代码写入 configure.rc 配置文件中,最 ...

  5. python批量pdf转word_Python:PDF批量转Worde+PDF图片快速提取(附源代码)-Go语言中文社区...

    在日常生活中我们常常会用到PDF格式的文档,这种格式虽然阅读方便,但我们通常无法修改PDF里面的内容,如果想要修改的需要把PDF转成Word形式.除此之外,PDF字间距较大,如果完整打印下来会花费不少 ...

  6. python向mysql中添加数据_通过python操控MYSQL添加数据,并将数据添加到EXCEL中-阿里云开发者社区...

    第一步 在python中创建mysql数据表 import pymysql #导入模块 def getCon(): #联接到数据库,并封装循环使用,db是数据库名字 conn = pymysql.co ...

  7. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中

    Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中 一.资源 EasyExcel使用教程 Jsoup爬虫教程 二.代码 xml依赖 ...

  8. python爬取天气数据山东_Python的学习《山东省各城市天气爬取》

    Python+scrapy爬取山东各城市天气预报 1.在命令提示符环境使用pip install scrapy命令安装Python扩展库scrapy,详见Python使用Scrapy爬虫框架爬取天涯社 ...

  9. python爬取微博恶评_Python爬取新浪微博评论数据,了解一下?

    开发工具 **Python版本:**3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装 ...

最新文章

  1. Google、高通都在研究的芯片架构,是他们对抗ARM的武器
  2. java异常怎么输出到页面_怎么把抛出的异常信息输出到SWING 界面上
  3. C++ for循环跳过某一项求和
  4. Unity3d 控制物体移动、旋转、缩放
  5. Linux下查看进程对应的命令绝对路径
  6. 如何判断字符串已经被url编码_如何判断回文数?不要再将整数转为字符串来解决这个问题了...
  7. 简单的控制台五子小游戏棋程序(Java)
  8. 解决Ubuntu刚装好的时候su命令密码错误的问题
  9. java伪代码 读后感
  10. springboot集成购买阿里的rocketmq
  11. paip.提升安全性-------用户口令密码的检测与生成
  12. HTML5 网站大观:15个精美的 HTML5 作品集网站实例
  13. Python编写杨辉三角形
  14. Maven项目之一号店——注册与登录
  15. ipa包瘦身之图片无损压缩瘦身
  16. 人脸识别可视化项目实现过程Bug记录
  17. 史上最全Android版本号信息:)
  18. Mathtype安装教程(mathpage.wll文件未找到)
  19. mysql教程pdf_mysql使用教程指南.pdf
  20. SD卡SPI模式入门教程

热门文章

  1. python输出台阶_python 上台阶
  2. 【洛谷】P1425.小鱼的游泳时间 解题报告
  3. python 三角形雷达图_python怎么画雷达图?Matplotlib数据可视化008:雷达图\极坐标图...
  4. 转自-三聚氰胺的为什么都是奶业巨头呢
  5. Android用Zxing扫二维码/生成二维码功能
  6. 软件测试用例篇(5)
  7. npm 默认全局、缓存路径及国内镜像地址修改
  8. java空格符完全替换方法
  9. 数据可视化:趋势类可视化图表大全
  10. 计算机知识不如别人,一个计算机从业人员的心声——有时候“授人以渔不如授之以鱼”...