Python爬蟲(chóng)實(shí)例扒取2345天氣預(yù)報(bào)
寒假里學(xué)習(xí)了一下Python爬蟲(chóng),使用最簡(jiǎn)單的方法扒取需要的天氣數(shù)據(jù),對(duì),沒(méi)聽(tīng)錯(cuò),最簡(jiǎn)單的方法。甚至沒(méi)有一個(gè)函數(shù)封裝。。
網(wǎng)址:http://tianqi.2345.com/wea_history/53892.htm
火狐中右鍵查看網(wǎng)頁(yè)源代碼,沒(méi)有發(fā)現(xiàn)天氣數(shù)據(jù),因此推斷網(wǎng)頁(yè)采用的json格式數(shù)據(jù)。
右擊->查看元素->網(wǎng)絡(luò)->JS,找到了位置

用Python爬蟲(chóng)下載為json格式數(shù)據(jù)存儲(chǔ)下來(lái),代碼如下:
#-*- coding:utf-8 -*-
import urllib2
import json
months = [1,2,3,4,5,6,7,8,9,10,11,12]
years = [2011,2012,2013,2014,2015,2016]
city = [53892] #邯鄲代碼53892
for y in years:
for m in months:
for c in city:
url = "http://tianqi.2345.com/t/wea_history/js/"+str(c)+"_"+str(y)+str(m)+".js?qq-pf-to=pcqq.c2c"
print url
html = urllib2.urlopen(url)
srcData = html.read()
#JsonData = json.loads(srcData)
file = open("d:/json/"+str(c)+"handan/weather"+str(c)+"_"+str(y)+str(m)+".json","w")
file.write(srcData)
file.close()
扒取存到本地:因?yàn)槭莿倢W(xué),學(xué)一點(diǎn)就動(dòng)手實(shí)踐了一下,還沒(méi)有學(xué)到j(luò)son的轉(zhuǎn)換,直接使用的正則匹配,提取json中的數(shù)據(jù),直接打印
提取轉(zhuǎn)換json文件中的數(shù)據(jù)Python代碼:
#-*- coding:utf-8 -*-
import json
import re
import time
Year = [2014]
Month = [1]
for y in Year:
for m in Month:
"""
2016年2月15日終于改成功。
是因?yàn)檎齽t匹配后的編碼問(wèn)題,導(dǎo)致輸出時(shí)無(wú)法顯示。
在每個(gè)正則匹配的元組后添加 .decode('gbk').encode('utf-8'),成功輸出
"""
content = fRead.read()
pattern = re.compile('{ymd:\'(.*?)\',bWendu:\'(.*?)\',yWendu:\'(.*?)\',tianqi:\'(.*?)\',fengxiang:\'(.*?)\',fengli:\'(.*?)\'},',re.S)
items = re.findall(pattern,content)
for item in items:
print item[0].decode('gbk').encode('utf-8'),","+item[1].decode('gbk').encode('utf-8'),","+item[2].decode('gbk').encode('utf-8'),","+item[3].decode('gbk').encode('utf-8'),","+item[4].decode('gbk').encode('utf-8'),","+item[5].decode('gbk').encode('utf-8')
time.sleep(0.1)
fRead.close()
使用Sublime Text 3運(yùn)行
使用正則處理的一大問(wèn)題就是,格式不整齊,總會(huì)漏掉一些數(shù)據(jù)。可能是由于匹配的速度過(guò)快導(dǎo)致部分?jǐn)?shù)據(jù)缺失,但是通過(guò)time.sleep() 睡眠依舊不能解決問(wèn)題。
由此可以看出正則匹配時(shí)的缺陷,待以后使用Python中專(zhuān)門(mén)用于處理json數(shù)據(jù)的包以后,再重新試一下
- Python天氣預(yù)報(bào)采集器實(shí)現(xiàn)代碼(網(wǎng)頁(yè)爬蟲(chóng))
- Python爬蟲(chóng)天氣預(yù)報(bào)實(shí)例詳解(小白入門(mén))
- 用python爬取歷史天氣數(shù)據(jù)的方法示例
- Python爬取國(guó)外天氣預(yù)報(bào)網(wǎng)站的方法
- python3爬取各類(lèi)天氣信息
- python可視化爬蟲(chóng)界面之天氣查詢(xún)
- python爬取天氣數(shù)據(jù)的實(shí)例詳解
- Python3爬蟲(chóng)之自動(dòng)查詢(xún)天氣并實(shí)現(xiàn)語(yǔ)音播報(bào)
- 基于Python爬蟲(chóng)采集天氣網(wǎng)實(shí)時(shí)信息
- 如何利用python多線程爬取天氣網(wǎng)站圖片并保存
相關(guān)文章
解決使用PyCharm時(shí)無(wú)法啟動(dòng)控制臺(tái)的問(wèn)題
今天小編就為大家分享一篇解決使用PyCharm時(shí)無(wú)法啟動(dòng)控制臺(tái)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
通過(guò)實(shí)例簡(jiǎn)單了解python yield使用方法
這篇文章主要介紹了通過(guò)實(shí)例簡(jiǎn)單了解python yield使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Pygame用200行代碼實(shí)現(xiàn)俄羅斯方塊
俄羅斯方塊的邏輯很簡(jiǎn)單,就是幾個(gè)方塊組合在一起,然后下落,當(dāng)其碰到四周的墻壁后便無(wú)法移動(dòng),若某行被方塊所填滿,那么就刪除這一行,然后此行上面的所有方塊下降一行,本文給大家介紹了用Pygame實(shí)現(xiàn)俄羅斯方塊,文中代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Python3訪問(wèn)MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)步驟
要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的IM(即時(shí)通訊)系統(tǒng),支持用戶注冊(cè)、登錄和聊天記錄存儲(chǔ),你可以使用Python和mysql數(shù)據(jù)庫(kù),以下是一個(gè)基本的實(shí)現(xiàn)步驟,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-11-11
如何將yolo格式轉(zhuǎn)化為voc格式:txt轉(zhuǎn)xml(親測(cè)有效)
這篇文章主要介紹了如何將yolo格式轉(zhuǎn)化為voc格式:txt轉(zhuǎn)xml,親測(cè)有效,可以使用,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),感興趣的朋友參考下吧2023-12-12

