摘要
學(xué)Python不拿來寫爬蟲,總能對得起這門具有強大爬蟲功能的腳本語言呢。
現(xiàn)在就來講講如何利用網(wǎng)頁爬蟲來寫一個天氣預(yù)報采集器,主要就是在中國天氣網(wǎng)上爬取網(wǎng)頁并過濾數(shù)據(jù),得到需要的天氣信息并打印出來。
這個爬蟲例子實現(xiàn)的功能不僅可以查全國城市的天氣情況,也可以查一個省份或直轄市的總體天氣情況,如輸入“廣東”則會列出廣東省內(nèi)所有地方的天氣。
Python版本:2.7
系統(tǒng)平臺:ubuntu 14.04
編程思想
http://www.weather.com.cn/data/cityinfo/%s.html 這個中國天氣網(wǎng)的鏈接即可顯示對應(yīng)城市的天氣,其中%s是城市編碼,如北京的城市編碼是101010100,則瀏覽器地址欄輸入http://www.weather.com.cn/data/cityinfo/101010100.html 即可顯示北京的天氣信息。這樣就可以生成城市和城市編碼的字典,輸入城市轉(zhuǎn)化為編碼,并嵌入到上述鏈接中,過濾得到相應(yīng)的信息并打印出來。
那么,列出一個省份中所有城市的天氣怎么實現(xiàn)呢?也很簡單,我注意到一個省份的所有城鎮(zhèn)的城市編碼前5位都是一樣的,如廣東省的廣州啊,深圳啊,東莞啊等等這些城市的編碼前5位都是10128,因此可以生成省份和5位省份編碼的字典,輸入省份轉(zhuǎn)化為編碼,再加上剩余的4位并嵌入到上述鏈接中,過濾得到相應(yīng)的信息并打印出來。
編程思想有了,敲代碼就簡單了,我自己實現(xiàn)的代碼如下:
代碼里city和provincce都是一個字典文件,字典的key是城市名稱,value是城市編碼。運行程序的效果如下: