版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2.6.1 項(xiàng)目簡(jiǎn)介2.6.1 項(xiàng)目簡(jiǎn)介在中國(guó)天氣網(wǎng)()中輸入一個(gè)城市的名稱(chēng),例如輸入深圳,那么會(huì)轉(zhuǎn)到地址/weather1d/101280601.shtml的網(wǎng)頁(yè)顯示深圳的天氣預(yù)報(bào),其中101280601是深圳的代碼,每個(gè)城市或者地區(qū)都有一個(gè)代碼。如圖2-6-1、2-6-2所示。2.6.2 HTML代碼分析2.6.2 HTML代碼分析用Chrome瀏覽器瀏覽網(wǎng)站,鼠標(biāo)指向7天天氣預(yù)報(bào)的今天位置,點(diǎn)擊右鍵彈出菜單,選擇“檢查”就可以打開(kāi)這個(gè)位置對(duì)應(yīng)的HTML代碼,如圖2-6-3所示。選擇元素,點(diǎn)擊右鍵彈出菜單選擇Edit as HTML,就可以進(jìn)入編輯狀態(tài),復(fù)制整個(gè)HTML,結(jié)果如下:5日(今
2、天)多云32/28微風(fēng)6日(明天)多云32/27微風(fēng)7日(后天)多云32/27微風(fēng)8日(周四)多云32/27微風(fēng)9日(周五)多云33/27微風(fēng)10日(周六)多云33/27微風(fēng)11日(周日)多云轉(zhuǎn)小雨33/26微風(fēng)2.6.3 爬取天氣預(yù)報(bào)數(shù)據(jù)2.6.3 爬取天氣預(yù)報(bào)數(shù)據(jù)通過(guò)分析HTML代碼,我們可以編寫(xiě)爬取的程序爬取深圳7天的天氣預(yù)報(bào)數(shù)據(jù):from bs4 import BeautifulSoupfrom bs4 import UnicodeDammitimport urllib.requesturl=/weather/101280601.shtmltry: headers=User-Agent
3、:Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9pre) Gecko/2008072421 Minefield/3.0.2pre req=urllib.request.Request(url,headers=headers) data=urllib.request.urlopen(req) data=data.read() dammit=UnicodeDammit(data,utf-8,gbk) data=dammit.unicode_markup soup=BeautifulSoup(data,lxml) lis=soup
4、.select(ulclass=t clearfix li) for li in lis: try: date=li.select(h1)0.text weather=li.select(pclass=wea)0.text temp=li.select(pclass=tem span)0.text+/+li.select(pclass=tem i)0.text print(date,weather,temp) except Exception as err: print(err)except Exception as err: print(err)程序爬取結(jié)果:5日(今天) 多云 32/286
5、日(明天) 多云 32/277日(后天) 多云 32/278日(周四) 多云 32/279日(周五) 多云 33/2710日(周六) 多云 33/2711日(周日) 多云轉(zhuǎn)小雨 33/26由此可見(jiàn)爬取的數(shù)據(jù)與我們直接從網(wǎng)站看到的是一樣的。2.6.4 爬取與存儲(chǔ)天氣預(yù)報(bào)數(shù)據(jù)2.6.4 爬取與存儲(chǔ)天氣預(yù)報(bào)數(shù)據(jù)我們可以獲取北京、上海、廣州、深圳等城市的代碼,爬取這些城市的天氣預(yù)報(bào)數(shù)據(jù),并存儲(chǔ)到sqllite數(shù)據(jù)庫(kù)weathers.db中,存儲(chǔ)的數(shù)據(jù)表weathers是:create table weathers (wCity varchar(16),wDate varchar(16),wWeathe
6、r varchar(64),wTemp varchar(32),constraint pk_weather primary key (wCity,wDate)編寫(xiě)程序依次爬取各個(gè)城市的天氣預(yù)報(bào)數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,程序如下:from bs4 import BeautifulSoupfrom bs4 import UnicodeDammitimport urllib.requestimport sqlite3class WeatherDB: def openDB(self): self.con=sqlite3.connect(weathers.db) self.cursor=self.con.cu
7、rsor() try: self.cursor.execute(create table weathers (wCity varchar(16),wDate varchar(16),wWeather varchar(64),wTemp varchar(32),constraint pk_weather primary key (wCity,wDate) except: self.cursor.execute(delete from weathers) def closeDB(self): mit() self.con.close()def insert(self,city,date,weath
8、er,temp): try: self.cursor.execute(insert into weathers (wCity,wDate,wWeather,wTemp) values (?,?,?,?) ,(city,date,weather,temp) except Exception as err: print(err) def show(self): self.cursor.execute(select * from weathers) rows=self.cursor.fetchall() print(%-16s%-16s%-32s%-16s % (city,date,weather,
9、temp) for row in rows: print(%-16s%-16s%-32s%-16s % (row0,row1,row2,row3)class WeatherForecast: def _init_(self): self.headers = User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0 x64; en-US; rv:1.9pre) Gecko/2008072421 Minefield/3.0.2pre self.cityCode=北京:101010100,上海:101020100,廣州:101280101,深圳:1012
10、80601def forecastCity(self,city): if city not in self.cityCode.keys(): print(city+ code cannot be found) return url=/weather/+self.cityCodecity+.shtml try: req=urllib.request.Request(url,headers=self.headers) data=urllib.request.urlopen(req) data=data.read() dammit=UnicodeDammit(data,utf-8,gbk) data
11、=dammit.unicode_markup soup=BeautifulSoup(data,lxml) lis=soup.select(ulclass=t clearfix li)for li in lis: try: date=li.select(h1)0.text weather=li.select(pclass=wea)0.text temp=li.select(pclass=tem span)0.text+/+li.select(pclass=tem i)0.text print(city,date,weather,temp) self.db.insert(city,date,wea
12、ther,temp) except Exception as err: print(err) except Exception as err: print(err)def process(self,cities): self.db=WeatherDB() self.db.openDB() for city in cities: self.forecastCity(city) #self.db.show() self.db.closeDB()ws=WeatherForecast()cess(北京,上海,廣州,深圳)print(completed)北京 7日(今天) 晴間多云,北部山區(qū)有陣雨或雷陣
13、雨轉(zhuǎn)晴轉(zhuǎn)多云 31/17北京 8日(明天) 多云轉(zhuǎn)晴,北部地區(qū)有分散陣雨或雷陣雨轉(zhuǎn)晴 34/20北京 9日(后天) 晴轉(zhuǎn)多云 36/22北京 10日(周六) 陰轉(zhuǎn)陣雨 30/19北京 11日(周日) 陣雨 27/18北京 12日(周一) 陰轉(zhuǎn)晴 28/20北京 13日(周二) 晴 32/21上海 7日(今天) 多云 30/21上海 8日(明天) 多云轉(zhuǎn)陰 32/23上海 9日(后天) 陣雨 32/24上海 10日(周六) 中雨 27/22上海 11日(周日) 小雨轉(zhuǎn)多云 29/22上海 12日(周一) 多云 30/22上海 13日(周二) 多云轉(zhuǎn)陰 30/21廣州 7日(今天) 多云 35/27廣州 8日(明天) 多云 35/28廣州 9日(后天) 多云 35/28廣州 10日(周六)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全新網(wǎng)絡(luò)游戲開(kāi)發(fā)合同2篇
- 2024-2025學(xué)年新教材高中歷史第八單元20世紀(jì)下半葉世界的新變化第19課資本主義國(guó)家的新變化課時(shí)作業(yè)含解析新人教版必修中外歷史綱要下
- 2025不動(dòng)產(chǎn)登記信息化改造項(xiàng)目合同3篇
- 2025年微信小程序企業(yè)客戶關(guān)系管理系統(tǒng)開(kāi)發(fā)與應(yīng)用合同3篇
- 2024銷(xiāo)售人員職業(yè)發(fā)展保障勞動(dòng)合同3篇
- 二零二五年度醫(yī)療設(shè)施臨時(shí)借款合同參考樣本4篇
- 2025高溫粘合劑產(chǎn)業(yè)鏈金融服務(wù)平臺(tái)合作合同3篇
- 2025年度電信設(shè)備知識(shí)產(chǎn)權(quán)保護(hù)合同3篇
- 2025年度食品行業(yè)退換貨質(zhì)量保證協(xié)議書(shū)
- 二零二五年度高層建筑樓頂廣告位使用權(quán)租賃合同3篇
- 臺(tái)資企業(yè)A股上市相關(guān)資料
- 電 梯 工 程 預(yù) 算 書(shū)
- 羅盤(pán)超高清圖
- 參會(huì)嘉賓簽到表
- 機(jī)械車(chē)間員工績(jī)效考核表
- 形式發(fā)票格式2 INVOICE
- 2.48低危胸痛患者后繼治療評(píng)估流程圖
- 人力資源管理之績(jī)效考核 一、什么是績(jī)效 所謂績(jī)效簡(jiǎn)單的講就是對(duì)
- 山東省醫(yī)院目錄
- 云南地方本科高校部分基礎(chǔ)研究
- 廢品管理流程圖
評(píng)論
0/150
提交評(píng)論