爬取中国天气网各地区最高气温排行

废话不多说,先上代码

import requests
from lxml import etree
from pyecharts import Bar
import operator


def parse(url):
    resp = requests.get(url)
    source = resp.content.decode('utf-8')
    html = etree.HTML(source)
    big_div = html.xpath('//div[@class="hanml"]/div[1]/div')
    weather_list = []
    for div in big_div:
        trs = div.xpath('.//tr[position()>2]')
        for tr in trs[1:]:
            city = tr.xpath('./td[1]/a/text()')[0]
            phenomena = tr.xpath('./td[2]/text()')[0]
            wind = tr.xpath('./td[3]/span/text()')
            diretion = wind[0]
            force = wind[1]
            tmax = tr.xpath('./td[4]/text()')[0]
            # print(city, phenomena, (diretion, force), tmax)

            night_phenomena = tr.xpath('./td[5]/text()')[0]
            night_wind = tr.xpath('./td[6]/span/text()')
            night_diretion = wind[0]
            night_force = wind[1]
            night_tmax = tr.xpath('./td[7]/text()')[0]
            # print(night_phenomena, (night_diretion, night_force), night_tmax)
            weather_dict = dict(city=city,
                                phenomena=phenomena,
                                diretion=diretion,
                                force=force,
                                tmax=tmax,
                                night_phenomena=night_phenomena,
                                night_diretion=night_diretion,
                                night_force=night_diretion,
                                night_tmax=night_tmax)
            weather_list.append(weather_dict)
    return weather_list


# print(len(weather_list))
# print(weather_list)


def gene_charts(weather_list, name):
    bar = Bar(name, name)
    weather_list = sorted(weather_list, key=operator.itemgetter('tmax'), reverse=True)
    kwargs = dict(
        name=name,
        x_axis=[item['city'] for item in weather_list],
        y_axis=[item['tmax'] for item in weather_list]
    )
    bar.add(**kwargs)
    bar.render(name + '.html')


def main():
    region_dict = dict(
        华北='http://www.weather.com.cn/textFC/hb.shtml',
        东北='http://www.weather.com.cn/textFC/db.shtml',
        华东='http://www.weather.com.cn/textFC/hd.shtml',
        华中='http://www.weather.com.cn/textFC/hz.shtml',
        华南='http://www.weather.com.cn/textFC/hn.shtml',
        西北='http://www.weather.com.cn/textFC/xb.shtml',
        西南 = 'http://www.weather.com.cn/textFC/xn.shtml',
        # 港澳台 = 'http://www.weather.com.cn/textFC/gat.shtml'
    )
    for name, url in region_dict.items():
        weather_list = parse(url)
        gene_charts(weather_list, name=name)


if __name__ == '__main__':
    main()

效果图(pyecharts生成)

东北.PNG
西南.PNG
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【一】学PYTHON及爬虫的一些总结 【二】PYTHON爬取全国新房房价与浅析 PART ONE:【数据采集】爬取...
    吴点阅读 3,201评论 0 4
  • 经过了前面的努力,我们成功获取到了数据,并且学会了保存,但是只是用网页展示出来,是不是有一些不够美观呢? 所以本节...
    终可见丶阅读 18,766评论 63 154
  • 秋风送爽,金桂飘香。又是中秋,又见明月。中秋夜的月格外皎洁明亮。一轮明月白玉盘似的将清辉洒满人间。仰望苍穹,皓月当...
    江玥居士阅读 731评论 2 10
  • 我的身体里住着一个世界 ■刘汉皇 我喜欢,海浪冲刷的感觉 并为此快乐着 我喜欢,在一望无际的蓝色中 把思想和灵魂,...
    刘汉皇阅读 416评论 16 22
  • 家乡的春天是单调的, 是白色的是空白的, 是白白的雪地, 是枝叶起始的萌芽。 夏日 是忙碌的季节, 是播种的青稞时...
    尕让吉旺阅读 138评论 0 0