Python爬蟲系列:使用selenium+Edge查詢指定城市天氣情況
首先發個福利,有個網店正在推出特價優惠《Python程序設計開發寶典》,原價69.0元,特價46.92元,詳情查看:https://detail.tmall.com/item.htm?id=561815917114&ali_refid=a3_430583_1006:1121676698:N:Python
=======分割線======
話說,國外有個網站http://openweathermap.org/可以免費查詢指定城市的當前天氣情況:
那是不是可以寫個爬蟲程序,自動調用網站的功能來實現天氣查詢呢?畢竟在網頁上已經清清楚楚地顯示了這些數據。按慣例,查看源碼,卻發現啥也木有。
再仔細檢查,發現這個網站是使用JavaScript動態獲取並顯示天氣數據的:
繼續查找和分析,原來數據都是在這裡的。
看起來好像很麻煩的樣子,還是換個思路吧,等有時間再慢慢分析如何提取這樣的數據。回到網站首頁,發現該網站還提供了API介面,可以直接調用並以JSON格式返回指定城市的天氣數據,但是需要首先擁有一個API key才行:
如何獲取這個API key呢,答案是註冊一個賬號:
然而,註冊賬號時會調用google的驗證服務,除非採取特殊手段,否則不會成功,原因不解釋。
兩條路都不太順暢啊,還是再換個思路吧。按道理講,只要是在網頁上顯示出來的數據,理論上都應該是可以提取出來的。如果能夠模擬瀏覽器的渲染過程,得到渲染後的前端代碼,應該就可以了。
那麼怎麼模擬呢?讓我們拿出一個大殺器,selenium,通過這個擴展庫可以驅動幾個主流瀏覽器並調用其功能,這裡我們選擇使用Edge。
首先,查看一下本地計算機Windows操作系統的內部版本號,以我的Win10為例,步驟為:依次單擊開始==>設置==>系統==>關於,找到下圖中的操作系統內部版本號:
然後打開網址https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/,下載合適版本的驅動,並放到Python安裝目錄下:
接下來,來到命令提示符環境,使用pip安裝擴展庫selenium:
最後編寫如下Python代碼,查詢指定城市的天氣情況:
上面代碼中的正則表達式是根據driver.page_cource的內容編寫的,可以自行分析並逐步嘗試,代碼運行結果如下(運行過程會稍微慢一點):
和網頁上的數據對比一下:
內容完全一致。當然,如果使用更整潔的格式查看天氣數據,可以使用正則表達式從程序結果中進行二次提取,不再贅述。
※Python檢測皮卡丘
※學了Python後,我走哪裡都可以連WIFI!為什麼?反正就是這麼強!
TAG:Python |