当前位置: 开源爱好者 » 编程教程 » Python教程 » 正文

Python抓取天气预报信息,以北京为例

现在很多智能手机上的天气信息,基本上都是基于Java技术采集的天气信息,目标站可能不同,但大致方法相似,本代码主要是使用Python来抓取天气,以采集北京天气为例,具体实现思路为:

#!/usr/bin/python
#-*- coding=UTF-8 -*-

import urllib
import re

def getHtml(url):
	page = urllib.urlopen(url)
	html = page.read()
	page.close
	return html

def get_city(html):
	reg = r'<title>【(.+?)天气】.+?</title>'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,html)
	return get_list[0]

def get_start(html):
	reg=r'<h1>.+?(今天.+?</h1>'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,html)
	return get_list[0]

def get_end(html):
	reg=r'<h1>.+?(明天.+?</h1>'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,html)
	return get_list[0]

def get_block(html):
	start=html.find(get_start(html))
	end=html.find(get_end(html))
	block=html[start:end]
	return block

def get_block_date(block):
	reg=r'<h1>(.+?)(今天.+?</h1>'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,block)
	return get_list[0]

def get_block_air(block):
	reg=r'p class="wea" title="(.+?)".+?'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,block)
	return get_list[0]

def get_block_day_tmp(block):
	reg=r'<span>([0-9]+).+?</span>'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,block)
	if len(get_list)>0:
		return get_list[0]
	else:
		return "无数据"

def get_block_night_tmp(block):
	reg=r'<i>([0-9]+).+?</i>'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,block)
	return get_list[0]

def get_block_wind(block):
	reg=r'<i>([^0-9]+)</i>'
	get_re = re.compile(reg)
	get_list = re.findall(get_re,block)
	return get_list[0]

html = getHtml("http://www.weather.com.cn/weather/101010100.shtml")
block=get_block(html)

print "所在城市:"+get_city(html)
print "查询日期:"+get_block_date(block)
print "天气情况:"+get_block_air(block)
print "日间温度:"+get_block_day_tmp(block)
print "夜间温度:"+get_block_night_tmp(block)
print "风力指数:"+get_block_wind(block)

本采集的目标站为weather.com,大部分都是采集的这个网站,不过也可换为其它的站,但是采集的规则是需要变的。

相关内容:
》编辑推荐的内容
  • 暂时没有内容……

CopyRight 2018© 开源爱好者 All Rights Reserved 豫ICP备16030607号 隐私声明 网站地图