美文网首页
Python告诉你今天最冷的地方在哪里

Python告诉你今天最冷的地方在哪里

作者: AirPython | 来源:发表于2018-12-17 20:55 被阅读7次
image

阅读文本大概需要 7 分钟。

抓取目标

这次我们的目标是爬取全国最冷的 10 座城市。

首先打开目标网站 - 中国天气网。

http://www.weather.com.cn/textFC/hb.shtml

image

我们要爬取全国所有城市的最低温度,然后获取温度最低的 10 个城市,并绘制成饼状图。

准备工作

由于爬取的数据少,考虑使用「 美味汤 - beautiful soup 」的方式来爬取。

另外,最后需要根据数据生成饼状图,需要安装「 pyecharts 」及兼容库,不然控制台会报错。

# 安装美味汤
pip3 install bs4
# html5lib 提升兼容性
pip3 install html5lib
# 安装图形库
pip3 install pyecharts
# 安装图形兼容库
pip3 install pyecharts-snapshot

注意:一般爬虫使用 lxml 去解析,但是由于中国天气网的「 港澳台 」页面源码中存在很多标签没有正确关闭,因此使用 html5lib 的方式去解析数据。

image

爬取思路

首先,我们可以看到全国分为华北、东北、华东、华中、华南、西北、西南、港澳台,8 个区域来展示天气数据。

# 一共8个区域,包含:华北、东北、华东、华中、华南、西北、西南、港澳台
# 华北
url_hb = 'http://www.weather.com.cn/textFC/hb.shtml'
# 东北
url_db = 'http://www.weather.com.cn/textFC/db.shtml'
# 华东
url_hd = 'http://www.weather.com.cn/textFC/hd.shtml'
# 华中
url_hz = 'http://www.weather.com.cn/textFC/hz.shtml'
# 华南
url_hn = 'http://www.weather.com.cn/textFC/hn.shtml'
# 西北
url_xb = 'http://www.weather.com.cn/textFC/xb.shtml'
# 西南
url_xn = 'http://www.weather.com.cn/textFC/xn.shtml'
# 港澳台【比较特殊】
url_gat = 'http://www.weather.com.cn/textFC/gat.shtml'

我们首先需要去获取每一个区域下所有城市的天气数据,然后再对数据进行整理排序,写入到图形文件中。

代码实现

首先爬取「 华北地区 」城市的天气数据。

image

可以获取到下面的规律:

所有的「 class=conMidtab 」的 6 个 div 保存着华北地区所有城市,包含今天以内未来一周的天气数据。

每一个「 class=conMidtab2 」的 div 代表了一个省份的天气信息。

省份下面的城市天气数据,都包含 table 标签下。从第 3 个 tr 标签开始,是每一个城市的天气数据。

image
soup = BeautifulSoup(text, 'html5lib')
div_conMidtab = soup.find('div', class_='conMidtab')
# 3.获取所有的table子Tag【天气信息都保存在table标签下面】tables = div_conMidtab.find_all('table')
# 4.遍历片区下面的省份
for table in tables:     
    # 4.1过滤掉表头的两个tr数据    
    trs = table.find_all('tr')[2:]     
    # 5.遍历省份下面的市区     
        for index, tr in enumerate(trs):         
        tds = tr.find_all('td')          
       # 5.1 城市名称【第 1 个td标签】          
        # 注意:一个省份第一个城市取第 2 个td标签;其余城市取第 1 个td标签          
        city_td = tds[1] if index == 0 else tds[0]          
        city = list(city_td.stripped_strings)[0]          
        # 5.2 最低气温【倒数第 2 个td标签】          
        temp_low_td = tds[-2]          
        temp_low = list(temp_low_td.stripped_strings)[0]          
        ALL_DATA.append({"city": city, "temp_low": int(temp_low)})

接下来,循环全国 8 个区域的列表,获取所有城市的名称和温度数据。

for index, url in enumerate(url_areas):      
    print('开始爬取第{}个区域'.format(index + 1))      
    parse_page(url)      
    time.sleep(1)

然后拿到所有城市和温度的列表数据后,就可以对数据按温度进行「 升序 」排列。

def analysis_data():    
"""    分析爬下来的数据    :return:    """    
    # 1.默认的排序方式是升序【通过最低气温进行排序】    
    ALL_DATA.sort(key=lambda data: data['temp_low'])    
    # 2.获取前面10条数据    
    top_10 = ALL_DATA[:10]    return top_10

最后,将数据写入到饼状图中。

def show_with_chart(top_10):    
 """    10个城市和温度生成饼状图    :param top_10:    :return:    """    
        # 把列表tip_10中的每一项拿出去放到匿名函数中,然后组装成新的一个列表    
        # 1.获取城市列表    
        citys = list(map(lambda item: item['city'], top_10))    
        # 2.最低温度列表   
       temp_lows = list(map(lambda item: item['temp_low'], top_10))    
        # 3.生成饼状图并写入到html文件中    
        bar = Bar("最低气温排行榜")    
        bar.add("最低温度", citys, temp_lows)   
        # 渲染    
        bar.render('temperature.html')

05爬取结果

最后打开生成的饼状图,就能很直观的查看到今天温度最低的 10 个城市。

image

本文首发于公众号「 AirPython 」,后台回复「好冷」即可获取完整代码。

相关文章

  • Python告诉你今天最冷的地方在哪里

    阅读文本大概需要 7 分钟。 抓取目标 这次我们的目标是爬取全国最冷的 10 座城市。 首先打开目标网站 - 中国...

  • 狗的童话故事

    阿猫阿猫,你的心愿是什么? 阿猫:我希望能到那最冷的地方看企鹅。 那我们去吧。 阿猫:最冷的地方,我们怎么知道哪里...

  • 阿狗阿狗

    阿猫阿猫,你的心愿是什么? 阿猫:我希望能到那最冷的地方看企鹅。 那我们去吧。 阿猫:最冷的地方,我们怎么知道哪里...

  • 最冷和最热的地方在哪个国家?

    你知道世界上最冷和最热的地方在哪里吗?世界上最冷的地方在南极洲,年平均气温在-25X以下,绝对最低气温达-88.3...

  • 旅行,你去过最冷的地方是哪里?

    北方取暖靠屋内暖气,南方取暖靠的是一身正气。 出去吃个午饭就已经冻得瑟瑟发抖,与其躲在南方湿冷的空气里,还不如去最...

  • 在最冷的时候 去最冷的地方

    小希在元旦过后的第一个星期二要结婚了,除了在朋友间互相传递电子请帖以外,作为曾经最好的室友兼闺蜜的我,很荣幸的收到...

  • 强哥领你说方言(十七)(气候版)

    中国最冷的地方在哪里?回答这个问题之前你得深思熟虑,其实这个提问并不严谨! 因为中国最冷的地方没有人居住,而有人居...

  • 最冷的地方

    刚刚在动态看到一句话: 世界上最冷的地方, 不是北极,不是南极, 是没有你的高二年级。 这使我想起来了自己的高中岁...

  • 如果心动了怎么都是撩

    你知道世界上最冷的地方是哪里吗? 是没有你的地方。 你可以笑一下吗? 因为我的咖啡忘了加糖。 你是什么血型? 你是...

  • 神吐槽图片:蚂蚁花呗为什么让我还?蚂蚁花的让蚂蚁还

    附:神吐槽笑话 ◆◆◆◆◆◆去买东西,路上听到几个傻B在聊天,他们在讨论世界上最冷的的地方和最热的地方在哪里…… ...

网友评论

      本文标题:Python告诉你今天最冷的地方在哪里

      本文链接:https://www.haomeiwen.com/subject/iwqhkqtx.html