新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用python爬取歷史天氣數(shù)據(jù)的方法示例-創(chuàng)新互聯(lián)
某天氣網(wǎng)站(www.數(shù)字.com)存有2011年至今的天氣數(shù)據(jù),有天看到一本爬蟲教材提到了爬取這些數(shù)據(jù)的方法,學(xué)習(xí)之,并加以改進。
爬之前先分析url。左上有年份、月份的下拉選擇框,按F12,進去看看能否找到真正的url:
很容易就找到了,左邊是儲存月度數(shù)據(jù)的js文件,右邊是文件源代碼,貌似json格式。
雙擊左邊js文件,地址欄內(nèi)出現(xiàn)了url:http://tianqi.數(shù)字.com/t/wea_history/js/54511_20161.js
url中的“54511”是城市代碼,“20161”是年份和月份代碼。下一步就是找到城市代碼列表,按城市+年份+月份構(gòu)造url列表,就能開始遍歷爬取了。
城市代碼也很誠實,很快就找到了:
下一步得把城市名稱和代碼提取出來,構(gòu)造一個“城市名稱:城市代碼”的字典,或者由元組(城市名稱,城市代碼)組成的列表,供爬取時遍歷??紤]到正則提取時,構(gòu)造元組更便捷,就不做成字典了。
def getCity(): html = reqs.get('https://tianqi.2345.com/js/citySelectData.js').content text = html.decode('gbk') city = re.findall('([1-5]\d{4})\-[A-Z]\s(.*?)\-\d{5}',text) #只提取了地級市及以上城市的名稱和代碼,5以上的是縣級市 city = list(set(city)) #去掉重復(fù)城市數(shù)據(jù) print('城市列表獲取成功') return city
網(wǎng)頁標(biāo)題:用python爬取歷史天氣數(shù)據(jù)的方法示例-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://fisionsoft.com.cn/article/csjdsg.html