python爬蟲爬取中國天氣網各城市天氣數據(柱狀圖展示和中國地圖展示)(pyquery+pyecharts )


python爬蟲爬取中國天氣網各城市天氣數據(柱狀圖展示和中國地圖展示)(pyquery+pyecharts )

1、柱狀圖展示版本:

使用pyquery爬取了中國天氣網各城市的最高溫度,(因天氣網到了傍晚會顯示當天的溫度為空,所以這里爬取的是天氣網前一天(即昨天)的數據。

對爬取到的最高溫度數據按溫度從高到低排序,並使用pyecharts的柱狀圖進行展示。

from pyquery import PyQuery as pq
list=[]
listdept=[]
base='http://www.weather.com.cn'
url='http://www.weather.com.cn/textFC/hb.shtml'
doc = pq(url=url,encoding='utf-8')
for dept in doc('.lq_contentboxTab2 li a'):
    listdept.append(base+pq(dept).attr('href'))
for url in listdept[:-1]:
    doc = pq(url=url,encoding='utf-8')
    provinces=doc('.conMidtab')[1]
    for province in provinces:
        str_province=pq(province)('.rowsPan a').html()
        citys=pq(province)('tr')
        for city in citys[2:]:
            if citys.index(city)==2:
                list.append({'city':pq(city[1])('a').html(),'max':pq(city[4]).html()})
            else:
                list.append({'city':pq(city[0])('a').html(),'max':pq(city[3]).html()})

list=sorted(list,key=lambda x:int(x['max']),reverse=True)
citylist=[]
maxlist=[]
temperlist=[]
for item in list:
    citylist.append(item['city'])
    maxlist.append(item['max'])
from pyecharts import Bar
bar = Bar("最高溫度排名", "by babihuang")
bar.add("最高溫度", citylist, maxlist,is_more_utils=True)
bar.show_config()
bar.render()

2、中國地圖展示版本:

如果地圖不能展示,請使用PIP安裝地圖包:

pip install echarts-countries-pypkg  
pip install echarts-china-provinces-pypkg  
pip install echarts-china-cities-pypkg 

因為天氣數據里涉及的城市並沒有在地圖包中完整匹配,在此只在地圖上顯示每個省的省會的數據。

from pyquery import PyQuery as pq
list=[]
listdept=[]
base='http://www.weather.com.cn'
url='http://www.weather.com.cn/textFC/hb.shtml'
doc = pq(url=url,encoding='utf-8')
for dept in doc('.lq_contentboxTab2 li a'):
    listdept.append(base+pq(dept).attr('href'))
for url in listdept[:-1]:
    doc = pq(url=url,encoding='utf-8')
    provinces=doc('.conMidtab')[1]
    for province in provinces:
        str_province=pq(province)('.rowsPan a').html()
        citys=pq(province)('tr')
        for city in citys[2:3]:
            if citys.index(city)==2:
                list.append({'city':pq(city[1])('a').html(),'max':pq(city[4]).html()})
            else:
                list.append({'city':pq(city[0])('a').html(),'max':pq(city[3]).html()})

list=sorted(list,key=lambda x:int(x['max']),reverse=True)
temperlist=[]


from pyecharts import Geo
for item in list:
    temperlist.append((item['city']+"",item['max']))

data = temperlist
geo = Geo("全國省會城市高溫排名", "by babihuang", title_color="#fff", title_pos="center",
width=1200, height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0, 45], visual_text_color="#fff", symbol_size=15, is_visualmap=True)
geo.show_config()
geo.render()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM