python高階 利用網頁爬蟲寫天氣預報採集器

2021-06-27 15:20:58 字數 1807 閱讀 5735

其實要感謝我同學小黨,他向我展示了他寫的天氣預報程式,可以輸入城市後顯示當前城市的天氣和氣溫。然後我再完善了一下,不僅可以查全國城市的天氣情況,也可以查乙個省份或直轄市的總體天氣情況,如輸入「廣東」則會列出廣東省內所有地方的天氣。

程式設計思想:在中國天氣網給的鏈結中, 即可顯示對應城市的天氣,其中%s是城市編碼,如北京的城市編碼是101010100,則瀏覽器位址列輸入 即可顯示北京的天氣資訊(不信你試試- -;)。這樣就可以生成城市和城市編碼的字典,輸入城市轉化為編碼,並嵌入到上述鏈結中,過濾得到相應的資訊並列印出來。

那麼,列出乙個省份中所有城市的天氣怎麼實現呢?也很簡單,我注意到乙個省份的所有城鎮的城市編碼前5位都是一樣的,如廣東省的廣州啊,深圳啊,東莞啊等等這些城市的編碼前5位都是10128,因此可以生成省份和5位省份編碼的字典,輸入省份轉化為編碼,再加上剩餘的4位並嵌入到上述鏈結中,過濾得到相應的資訊並列印出來。

程式設計思想有了,敲**就簡單了,我自己實現的**如下:

import urllib.request

import json

from city import city

from province import province

choice=input('查詢省份或直轄市的天氣請輸入1,查詢某個城市的天氣請輸入2\n')

if (choice=='1'):

provincename=input('你想查哪個省份或直轄市的天氣?\n')

provincecode=province.get(provincename)

city=

for citycode in range(int(provincecode)*10000+1,int(provincecode)*10000+2000):

if (city.get(str(citycode))):

url = (''%str(citycode))

content = urllib.request.urlopen(url).read()

data = json.loads(content.decode())

result = data['weatherinfo']

str_temp = ('%s %s %s ~ %s') % (result['city'],result['weather'],result['temp1'],result['temp2'])

print (str_temp)

else:

continue

elif (choice=='2'):

cityname =input('你想查哪個城市的天氣?\n')

citycode = city.get(cityname)

url = (''%citycode)

content = urllib.request.urlopen(url).read()

data = json.loads(content.decode())

result = data['weatherinfo']

str_temp = ('%s %s %s ~ %s') % (result['city'],result['weather'],result['temp1'],result['temp2'])

print (str_temp)

else:

print('不合法的輸入')

**裡city和provincce都是乙個字典檔案,字典的key是城市名稱,value是城市編碼。執行程式的效果如下:

Python利用Requests庫寫爬蟲(一)

coding utf 8 import requests url r requests.get url print r.text coding utf 8 import requests url payload r requests.get url,params payload print r.te...

網頁爬蟲 scrapy高階

現在的大 基本除了pc端都會有移動端,所以需要先確定爬哪個。www.weibo.com,主站 www.weibo.cn,簡化版 m.weibo.cn,移動版 上面三個中,主站的微博資料是動態載入的,意味著光看原始碼是看不到資料的,想爬的話要麼搞清楚其api訪問情況,要麼模擬js,那樣的話花的力氣可能...

利用python的爬蟲技術實現網頁融合!

第二個思路使用爬蟲技術也就是本次使用的方法。from bs4 import beautifulsoup要使用bs4這個庫,這個庫很好安裝,當然還要安裝乙個依賴庫。直接上 了,注釋寫的很清楚 from collections import defaultdict from bs4 import bea...