婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python爬取各省降水量及可視化詳解

python爬取各省降水量及可視化詳解

熱門標簽:打印谷歌地圖標注 電話外呼系統招商代理 京華圖書館地圖標注 淮安呼叫中心外呼系統如何 廣東旅游地圖標注 蘇州人工外呼系統軟件 看懂地圖標注方法 佛山通用400電話申請 電話機器人貸款詐騙

在具體數據的選取上,我爬取的是各省份降水量實時數據

話不多說,開始實操

正文 

1.爬取數據

  • 使用python爬蟲,爬取中國天氣網各省份24時整點氣象數據
  • 由于降水量為動態數據,以js形式進行存儲,故采用selenium方法經xpath爬取數據—ps:在進行數據爬取時,最初使用的方法是漂亮湯法(beautifulsoup)法,但當輸出爬取的內容(class = split>時,卻空空如也。在源代碼界面Ctrl+Shift+F搜索后也無法找到降水量,后查詢得知此為動態數據,無法用該方法進行爬取
  • 使用循環和分類的方式爬取省份不同、網址相似的降水量數據,順帶記錄數據對應的城市

f—string:

url_a= f'http://www.weather.com.cn/weather1dn/101{a}0101.shtml'

f-string 用大括號 {} 表示被替換字段,其中直接填入替換內容

將城市和降水量相對應后存入字典再打印

代碼:

from lxml import etree
from selenium import webdriver
import re
city = [''for n in range(34)]   #存放城市列表
rain = [''for n in range(34)]   #存放有關降雨量信息的數值
rain_item = []
driver = webdriver.Chrome(executable_path='chromedriver')   #使用chrome瀏覽器打開
for a in range(1,5):      #直轄市數據
    url_a= f'http://www.weather.com.cn/weather1dn/1010{a}0100.shtml'  #網址
    driver.get(url_a)    #打開網址
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
for a in range(5,10):      #一位數字網址數據
    url_a= f'http://www.weather.com.cn/weather1dn/1010{a}0101.shtml'
    driver.get(url_a)
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text     #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
for a in range(10,35):      #二位數字網址數據
    url_a= f'http://www.weather.com.cn/weather1dn/101{a}0101.shtml'
    driver.get(url_a)
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
d = dict(zip(city,rain))  #將城市和降水量的列表合成為字典
for k,v in d.items():  #str轉float類型
    rain_item.append(float(v))
print(d)

在對爬取的內容進行處理時,可能會因為數據的類型而報錯,如爬下來的數據為str類型,而排序需要數字類型,故需要進行float類型轉化

使用該爬取方法,是模擬用戶打開網頁,并且會在電腦上進行顯示。在爬取實驗進行中途,中國天氣網進行了網址更新,原網址出現了部分城市數據無法顯示的問題,但當刷新界面后,數據可正常顯示,此時可采用模擬鼠標點擊刷新的方法避免錯誤。由于后續找到了新網址,故將這一方法省去。

2.數據可視化

  • 用Matplotlib庫函數繪制曲線,并輸出最大值及相應城市、最小值及相應城市、平均值和中位值
  • 數據的確定:medium分奇偶計算中位值所處排序后數據的位置(中位值);用sum求和后除于數據個數(平均值);max和min函數找到最值再由數值經循環找到對應的城市列表
  • 繪圖:使用plt函數繪制圖像,并注明橫縱坐標、所需注釋
  • 文本處理:在進行注釋時,plt函數所要求的格式為str類型,故需要進行類型轉換,同時添加適當文字說明

代碼:

#-*- codeing = utf-8 -*-
import matplotlib.pyplot as plt
from lxml import etree
from selenium import webdriver
import re
import matplotlib
matplotlib.rc("font",family='YouYuan')
city = [''for n in range(34)]   #存放城市列表
rain = [''for n in range(34)]   #存放有關降雨量信息的數值
driver = webdriver.Chrome(executable_path='chromedriver')   #使用chrome瀏覽器打開
for a in range(1,5):      #直轄市數據
    url_a= f'http://www.weather.com.cn/weather1dn/1010{a}0100.shtml'  #網址
    driver.get(url_a)    #打開網址
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
for a in range(5,10):      #非直轄一位數字網址數據
    url_a= f'http://www.weather.com.cn/weather1dn/1010{a}0101.shtml'
    driver.get(url_a)
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
for a in range(10,35):      #非直轄二位數字網址數據
    url_a= f'http://www.weather.com.cn/weather1dn/101{a}0101.shtml'
    driver.get(url_a)
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
if len(rain)%2 == 0:        #尋找中值
    medium = int(len(rain)/2)
else:
    medium = int(len(rain)/2)+1
medium_text = "中位值:" + rain[medium]
d = dict(zip(city,rain))  #將城市和降水量的列表合成為字典
rain_item = []
city_min = []
city_max = []
for k,v in d.items():
    rain_item.append(float(v))
average_rain = sum(rain_item)/len(rain_item)
average_text = "平均值:"+ str(average_rain)
max_rain = max(rain_item)  #最大值
min_rain = min(rain_item)  #最小值
for k,v in d.items():
    if float(v) == min_rain:
        city_min.append(k)
min_text = "降雨量最小的城市:"+str(city_min)+" 最小值:"+str(min_rain)
for k,v in d.items():
    if float(v) ==max_rain:
        city_max.append(k)
max_text = "降雨量最大的城市:"+str(city_max)+" 最大值:"+str(max_rain)
plt.bar(range(len(d)), rain_item, align='center')
plt.xticks(range(len(d)), list(d.keys()))
plt.xlabel('城市',fontsize=20)
plt.ylabel('降水量',fontsize=20)
plt.text(0,12,average_text,fontsize=6)
plt.text(0,13,medium_text,fontsize=6)
plt.text(0,14,max_text,fontsize=6)
plt.text(0,15,min_text,fontsize=6)
plt.show()

2.運行界面

3.互動界面

使用tkinter庫進行GUI的構建使用button函數實現交互,調用編寫的get函數獲取對用戶輸入的內容進行獲取并使用循環進行遍歷處理,若城市輸入正確,則在界面上輸出當地的降水量代碼:

#-*- codeing = utf-8 -*-
from lxml import etree
from selenium import webdriver
import re
import matplotlib
matplotlib.rc("font",family='YouYuan')
from tkinter import *
import tkinter as tk
city = [''for n in range(34)]   #存放城市列表
rain = [''for n in range(34)]   #存放有關降雨量信息的數值
driver = webdriver.Chrome(executable_path='chromedriver')   #使用chrome瀏覽器打開
for a in range(1,5):      #直轄市數據
    url_a= f'http://www.weather.com.cn/weather1dn/1010{a}0100.shtml'  #網址
    driver.get(url_a)    #打開網址
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
for a in range(5,10):      #非直轄一位數字網址數據
    url_a= f'http://www.weather.com.cn/weather1dn/1010{a}0101.shtml'
    driver.get(url_a)
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
for a in range(10,35):      #非直轄二位數字網址數據
    url_a= f'http://www.weather.com.cn/weather1dn/101{a}0101.shtml'
    driver.get(url_a)
    rain_list = []
    city_list = []
    resp_text = driver.page_source
    page_html = etree.HTML(resp_text)
    city_list = page_html.xpath('/html/body/div[4]/div[2]/a')[0]    #通過xpath爬取城市名稱
    rain_list = page_html.xpath('//*[@id="weatherChart"]/div[2]/p[5]')[0]   #通過xpath爬取降雨量數據
    city[a-1] = city_list.text  #存入城市列表
    rain[a-1] = re.findall(r"\d+\.?\d*",rain_list.text)[0] #存入數值
d = dict(zip(city,rain))  #將城市和降水量的列表合成為字典
root=tk.Tk()
root.title('降水量查詢')
root.geometry('500x200')
def get():
    values = entry.get()
    for k,v in d.items():
        if k == values:
            label = Label(root, text= v+'mm')
            label.pack()
frame = Frame(root)
frame.pack()
u1 = tk.StringVar()
entry = tk.Entry(frame, width=20, textvariable=u1,  relief="sunken")
entry.pack(side="left")
frame1 = Frame(root)
frame1.pack()
btn1=Button(frame1, text="查詢", width=20, height=1, relief=GROOVE, command=lambda :get())
btn1.pack(side="left")
root.mainloop()

4.運行界面

 

寫在最后

在爬取天氣的過程中,僅發現中國天氣網有各省份降水量的數據,可見我國在數據開源方面還有很長的路要走

到此這篇關于python爬取各省降水量及可視化詳解的文章就介紹到這了,更多相關python爬取請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python編寫可視化界面的全過程(Python+PyCharm+PyQt)
  • Python實現K-means聚類算法并可視化生成動圖步驟詳解
  • python數據分析之員工個人信息可視化
  • 關于Python可視化Dash工具之plotly基本圖形示例詳解
  • python用pyecharts實現地圖數據可視化
  • Python繪制K線圖之可視化神器pyecharts的使用
  • Python繪制詞云圖之可視化神器pyecharts的方法
  • python 可視化庫PyG2Plot的使用
  • Python數據分析之彩票的歷史數據
  • Python 數據分析之逐塊讀取文本的實現
  • Python數據分析庫pandas高級接口dt的使用詳解
  • Python Pandas數據分析工具用法實例
  • 用Python 爬取貓眼電影數據分析《無名之輩》
  • 大數據分析用java還是Python
  • python 數據分析實現長寬格式的轉換
  • PyCharm設置Ipython交互環境和宏快捷鍵進行數據分析圖文詳解
  • Python實戰之疫苗研發情況可視化

標簽:呼和浩特 股票 駐馬店 畢節 湖州 中山 衡水 江蘇

巨人網絡通訊聲明:本文標題《python爬取各省降水量及可視化詳解》,本文關鍵詞  python,爬取,各省,降水量,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python爬取各省降水量及可視化詳解》相關的同類信息!
  • 本頁收集關于python爬取各省降水量及可視化詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产乱国产乱300精品| 国产真实乱偷精品视频免| 成人永久免费视频| 国产精品无遮挡| 色综合激情五月| 三级在线观看一区二区| 精品国产乱码久久| www.亚洲免费av| 午夜一区二区三区在线观看| 欧美高清视频www夜色资源网| 精彩视频一区二区三区| 综合久久综合久久| 欧美日韩精品一区二区在线播放| 免费人成在线不卡| 国产精品婷婷午夜在线观看| 色综合久久久久综合| 日本aⅴ精品一区二区三区| 久久免费看少妇高潮| 国产原创一区二区| 亚洲一区欧美一区| 久久欧美中文字幕| 欧美日本不卡视频| 成人一区在线观看| 亚洲国产经典视频| 日韩精品一区二区三区四区| 91亚洲精品乱码久久久久久蜜桃 | 欧美剧在线免费观看网站| 国产一区二区电影| 午夜久久久久久| 中文字幕二三区不卡| 日韩视频免费观看高清完整版在线观看| 国产成人亚洲综合色影视| 亚洲黄色性网站| 国产网站一区二区三区| 91黄视频在线| 成人午夜在线播放| 看片网站欧美日韩| 亚洲第一在线综合网站| 国产精品久久久久天堂| 2020日本不卡一区二区视频| 欧美人xxxx| 99在线精品一区二区三区| 国产中文字幕一区| 蜜臀91精品一区二区三区| 亚洲国产一区在线观看| 国产精品国产三级国产有无不卡| 成人av网址在线| 国产一区二区美女| 美女一区二区三区| 天天色 色综合| 亚洲一区在线观看视频| 最新日韩在线视频| 国产精品国产a| 久久久国产一区二区三区四区小说| 51久久夜色精品国产麻豆| 欧美中文字幕不卡| 日本精品视频一区二区| 91丨porny丨蝌蚪视频| 国产+成+人+亚洲欧洲自线| 久久99精品久久久| 蜜桃久久久久久久| 视频一区二区三区中文字幕| 亚洲国产精品自拍| 亚洲成人在线观看视频| 亚洲18色成人| 日韩电影一区二区三区| 日韩va欧美va亚洲va久久| 同产精品九九九| 日韩写真欧美这视频| 正在播放亚洲一区| 日韩一区二区三区免费观看| 日韩一区和二区| 欧美天堂一区二区三区| 久久久久久久电影| 大陆成人av片| 欧美三级电影精品| 老汉av免费一区二区三区| 日本不卡123| 日本亚洲三级在线| 美女视频黄免费的久久 | 欧美在线观看视频一区二区三区| 93久久精品日日躁夜夜躁欧美| 91亚洲男人天堂| 色综合久久精品| 精品视频全国免费看| 91麻豆精品国产91久久久| 日韩小视频在线观看专区| 国产午夜精品福利| 欧美日韩精品免费| 7777精品伊人久久久大香线蕉完整版 | 成人国产精品免费观看动漫| 成人午夜免费av| 91精品1区2区| 日韩一区二区三区精品视频| 久久人人超碰精品| 亚洲视频免费看| 亚洲电影第三页| 久久国产精品99精品国产| 成人丝袜视频网| 欧美中文字幕不卡| 久久久午夜电影| 亚洲精品日日夜夜| 麻豆传媒一区二区三区| 成人国产精品视频| 国产精品18久久久久久vr| 色综合久久久网| 欧美一级欧美一级在线播放| 国产色婷婷亚洲99精品小说| 亚洲一区av在线| 国产在线观看一区二区| 自拍偷拍亚洲激情| 五月综合激情婷婷六月色窝| 国产精品影视网| 欧美亚洲国产一区二区三区| 欧美精品一区二区三区视频| 日韩码欧中文字| 久久99深爱久久99精品| 91视频你懂的| 久久嫩草精品久久久精品一| 亚洲午夜在线电影| 成人免费高清在线| 在线综合视频播放| 欧洲一区在线观看| 国产人成亚洲第一网站在线播放 | 中文成人av在线| 天天综合天天做天天综合| 成人黄页毛片网站| 精品国产1区2区3区| 一区二区三区不卡在线观看| 岛国一区二区三区| 日韩欧美专区在线| 亚洲一区二区视频在线观看| 国产精品一区二区男女羞羞无遮挡| 在线免费精品视频| 亚洲欧美在线高清| 国产一区二区三区视频在线播放| 在线播放一区二区三区| 亚洲美女屁股眼交3| 国产99久久久久| 26uuu国产电影一区二区| 日韩激情一区二区| 在线观看三级视频欧美| 国产精品成人一区二区艾草| 一区二区三区不卡视频| av电影在线观看不卡 | 欧美成人官网二区| 日韩精品五月天| 欧美日韩国产电影| 亚洲宅男天堂在线观看无病毒| 成人av网址在线| 国产日韩精品一区| 亚洲成a人v欧美综合天堂下载| 色视频欧美一区二区三区| 国产精品欧美综合在线| 国产91精品欧美| 久久久久国产精品麻豆ai换脸 | 久久嫩草精品久久久精品一| 日本成人在线不卡视频| 欧美精品国产精品| 五月婷婷另类国产| 欧美日韩一区二区在线视频| 亚洲一区二区三区四区在线免费观看 | 国内精品久久久久影院薰衣草| 日韩一区二区不卡| 青青草成人在线观看| 欧美一区二区三区思思人| 婷婷综合五月天| 在线不卡a资源高清| 欧美aⅴ一区二区三区视频| 欧美精品一二三区| 青青草国产成人99久久| 日韩欧美亚洲另类制服综合在线| 人人爽香蕉精品| 日韩欧美成人一区| 国产在线精品一区二区不卡了| 2022国产精品视频| 国产精品99久久久久久久女警| 精品国产免费一区二区三区四区 | 国产河南妇女毛片精品久久久| 日韩欧美国产综合一区 | 亚洲午夜在线视频| 欧美性猛交xxxxxx富婆| 亚洲成av人片www| 91精品在线免费观看| 裸体在线国模精品偷拍| 久久综合色播五月| 成人免费va视频| 玉米视频成人免费看| 在线播放91灌醉迷j高跟美女| 久久精品国产一区二区三区免费看| 欧美xxxx在线观看| 国产精品一区二区久激情瑜伽| 国产精品欧美综合在线| 日本韩国视频一区二区| 水蜜桃久久夜色精品一区的特点| 日韩一二在线观看| 国模一区二区三区白浆| 国产精品久久久久7777按摩| 欧美性生活久久| 久久aⅴ国产欧美74aaa|