Python技术栈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 12191|回复: 100

[爬取案例] 一个用Python编写抓取天气预报的代码示例

  [复制链接]

17

主题

20

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2018-12-12 09:53:27 | 显示全部楼层 |阅读模式
Python代码抓取获取天气预报信息源码讲解。这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单。这段代码可以获取当地的天气和、任意城市的天气预报,原理是根据url找到网站截取相应的数据展现。
Python抓取天气预报源码中,需要用到的模块使用方法文章推荐:
1、Python sys模块常用方法图文详解
2、Python string模块字符串函数方法操作教程
3、Python re正则表达式操作指南
4、Python urllib2模块post/get下载网络资源
[Python] 纯文本查看 复制代码
#!/usr/bin/env python
# 解释器路径
 
from HTMLParser import HTMLParser
import sys,urllib2,string,re
#导入使用方法模块
 
class HtmlParser(HTMLParser):
<span style="font-family: Arial, Verdana, sans-serif;">#定义一个类来完成这个功能</span>
 
    def __init__(self):
        self.data=''
        self.readingdata=0
        HTMLParser.__init__(self)
 
    def handle_starttag(self,tag,attrs):
        if tag == 'td':
            self.readingdata=1
 
    def handle_data(self,chars):
        if self.readingdata:
            self.data+=chars
 
    def handle_endtag(self,tag):
        if tag=='td':
            self.readingdata=0
 
    def cleanse(self):
        self.data = re.sub('\s+',' ', self.data)
 
    def getdata(self):
        self.cleanse()
        return self.data
 
# this url is a place where you want to know the weather forecast
url="http://www.weather.com.cn/html/weather/101210501.shtml"
 
req=urllib2.Request(url)
 
fd=urllib2.urlopen(req)
 
tp=HtmlParser()
 
tp.feed(fd.read())
 
weather=tp.getdata()
# when you are getting a weather after parsering
 
# this weather string have 7 days weather forecast
 
#[url]www.iplaypy.com[/url]
 
# the following if for my awesome format
 
weather=weather.split()
 
tag=[weather.index(i) for i in weather if '\xe6\x97\xa5' in i]
first=weather[:tag[1]]
second=weather[tag[1]:tag[2]]
if second[1]!=second[7]:second[1]+=' --> '+second[7]
second[2]=second[9]+' --> '+second[3]
second[0]=second[0][:-6]
second=second[:3]
third=weather[tag[2]:tag[3]]
if third[1]!=third[7]:third[1]+=' --> '+third[7]
third[2]=third[9]+' --> '+third[3]
third[0]=third[0][:-6]
third=third[:3]
weather=['    Weather:']+first+['|']+second+['|']+third
 
for i in weather:print i,

Python 总 群
回复

使用道具 举报

0

主题

6

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2018-12-12 09:55:36 | 显示全部楼层
我是个凑数的。。。
Python 总 群
回复

使用道具 举报

0

主题

6

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2018-12-12 12:19:45 | 显示全部楼层
为毛老子总也抢不到沙发?!!
Python 总 群
回复

使用道具 举报

0

主题

5

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2018-12-12 12:27:26 | 显示全部楼层
路过 帮顶 嘿嘿
Python 总 群
回复

使用道具 举报

0

主题

3

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2018-12-12 14:03:25 | 显示全部楼层
这么强,支持楼主,佩服
Python 总 群
回复

使用道具 举报

0

主题

8

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2018-12-12 14:37:59 | 显示全部楼层
1v1飘过
Python 总 群
回复

使用道具 举报

0

主题

9

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2018-12-12 20:43:30 | 显示全部楼层
啥玩应呀
Python 总 群
回复

使用道具 举报

0

主题

8

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2018-12-12 22:14:53 | 显示全部楼层
广告位,,坐下看看
Python 总 群
回复

使用道具 举报

0

主题

8

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2018-12-13 02:36:40 | 显示全部楼层
前排支持下
Python 总 群
回复

使用道具 举报

0

主题

4

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2018-12-13 05:22:53 | 显示全部楼层
学习下
Python 总 群
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|Archiver|手机版|小黑屋|Python.BBS ( 鲁ICP备18046958号 )

GMT+8, 2020-8-12 21:14 , Processed in 0.194914 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表