小編給大家分享一下python爬蟲如何爬取天氣預報表,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
為企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設、網(wǎng)站優(yōu)化、成都營銷網(wǎng)站建設、競價托管、品牌運營等營銷獲客服務。創(chuàng)新互聯(lián)公司擁有網(wǎng)絡營銷運營團隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術實力解決了企業(yè)“網(wǎng)站建設、網(wǎng)絡品牌塑造、網(wǎng)絡營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉化率,獲得了眾多企業(yè)客戶的高度認可!1 構造URL列表
每個月份的歷史天氣數(shù)據(jù)是通過一個 Javascript 文件獲取的。因此,我們需要構造帶爬取數(shù)據(jù)的 URL 列表,再批量爬取數(shù)據(jù)。
# 構造2019全年的月份列表 months = [] for year in (2019,): for month in range(12): months.append("%d%02d"%(year, month+1)) todo_urls = [ "http://tianqi.2345.com/t/wea_history/js/"+month+"/58457_"+month+".js" for month in months ]
2 批量下載數(shù)據(jù)
使用 requests 庫獲取 js 文件中的數(shù)據(jù),并存到 datas 變量中。
import requests datas = [] for url in todo_urls: r = requests.get(url, headers = headers) if r.status_code!=200: raise Exception() # 去除javascript前后的字符串,得到一個js格式的JSON data = r.text.lstrip("var weather_str=").rstrip(";") datas.append(data)
3 解析數(shù)據(jù)
我們從 js 文件獲取的數(shù)據(jù) json 格式存儲的,需要使用 demjson 對數(shù)據(jù)進行解析。
# 解析所有月份的數(shù)據(jù) all_datas = [] for data in datas: tqInfos = demjson.decode(data)["tqInfo"] all_datas.extend([x for x in tqInfos if len(x)>0])
4 將結果導入 csv 文件
import csv with open('./hangzhou_tianqi_2019.csv', 'w', newline='', encoding='utf-8') as csv_file: writer = csv.writer(csv_file) columns = list(all_datas[0].keys()) writer.writerow(columns) for data in all_datas: writer.writerow([data[column] for column in columns])
5 結果展示
以上是python爬蟲如何爬取天氣預報表的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!