python天气预报官网,python 实现对天气预报官网未来一周七天的天气情况抓取

通过HTMLPaser和urlib模块对网页进行抓取并分析

实现步骤:

1、自定义MYHTMLParser类

2、实例化类并访问天气预报官网

3、抓取关键数据

4、对数据进行切片处理并输出字典

from html.parser import HTMLPaser   #处理页面模块

from urllib import request  #访问网站模块

L = []  #定义列表接受抓取的信息

class MYHTMLPaser(HTMLParser):  #自定义MYHTMLParser类重写方法

#定义三个函数

#handle_starttag:处理开始标签  attrs:标签属性 tag:标签

a_t = False #定义a_t变量为提出标签内容时的判断做准备

def handle_starttag(self,tag,attrs):

if tag == "h1" and len(attrs) == 0:  #找出不带属性的h1标签

self.a_t = True

else  tag == "p" and len(attrs) > 1: #找出属性大于1的p标签

self.a_t = True

#handle_data:处理标签内容 data:标签内容

def handle_data(self,data):

if self.a_t ==True:  #取出h1标签p标签的内容并添加到L列表中

L.append(data)

#handle_endtag:处理结束标签

def handle_endtag(self,tag):

self.a_t = False #一个标签读取完成后恢复a_t变量为下一个标签的读取判断做准备

#自定义类实例化

p = MYHTMLParser()

#访问天气预报官网

with request.urlopen("http://www.weather.com.cn/weather/101010100.shtml") as f:

data  = f.read().decode('utf-8')   #读取网页数据

#解析网页信息查找未来七天的天气情况并输出到列表中

p.feed(str(data))

p.close() #关闭资源

#对列表进行操作输出字典

L1 = list(list(L)[2:-6])[1:][::2]

L2 = list(list(L)[2:-6])[::2]

weather = dict(zip(L2,L1))

#输出天气

print(weather)

输出结果如下图:

61efedb5db10

源码如下:

# 本模块对一周天气情况进行爬虫

fromhtml.parserimportHTMLParser

fromurllibimportrequest

importre

# 自定义MYHTMLParser类

L = []

classMYHTMLParser(HTMLParser):

a_t =False

def handle_starttag(self,tag,attrs):

if tag =="h1"andlen(attrs) ==0:

self.a_t =True

elif tag =="p"andlen(attrs) >1:

self.a_t =True

def handle_data(self,data):

ifself.a_t ==True:

L.append(data)

def  handle_endtag(self,tag):

self.a_t =False

# 自自定义类实例化

p = MYHTMLParser()

# 访问天气预报官网

withrequest.urlopen("http://www.weather.com.cn/weather/101010100.shtml")asf:

data = f.read().decode('utf-8')

# 解析网页输出关键信息

p.feed(str(data))

p.close()

# 转成字典

L1 =list(list(L)[2:-6])[1:][::2]

L2 =list(list(L)[2:-6])[::2]

weather =dict(zip(L2,L1))

print(weather)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值