版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)采集與可視化案例 本章學(xué)習(xí)目標(biāo)●分析鏈家二手房的網(wǎng)頁(yè)結(jié)構(gòu)和內(nèi)容●使用requests庫(kù)編寫(xiě)爬蟲(chóng)代碼獲取指定數(shù)據(jù)●使用BeautifulSoup實(shí)現(xiàn)數(shù)據(jù)的解析●使用pymysql庫(kù)實(shí)現(xiàn)數(shù)據(jù)的持久化●使用flask和echarts實(shí)現(xiàn)數(shù)據(jù)可視化7.3鏈家二手房數(shù)據(jù)采集與可視化7.3.1頁(yè)面分析根據(jù)前面的任務(wù)描述,可以知道本爬蟲(chóng)案例的具體需求,包括技術(shù)需求和數(shù)據(jù)需求,這是第一步。接下來(lái)將對(duì)頁(yè)面結(jié)構(gòu)和內(nèi)容進(jìn)行深度地分析,目的是為了找到鏈家二手房網(wǎng)頁(yè)中跟具體需求相關(guān)的業(yè)務(wù)邏輯和業(yè)務(wù)數(shù)據(jù)。如圖7-3所示,該頁(yè)面能夠清楚地定位到二手房的相關(guān)信息,包括地區(qū)、戶型、面積、裝修類(lèi)型、樓層、房屋類(lèi)型、售價(jià)等信息。因此,該爬蟲(chóng)綜合案例使用的URL將是這個(gè)擁有二手房相關(guān)信息的頁(yè)面。圖7-3鏈家二手房網(wǎng)頁(yè)數(shù)據(jù)使用鼠標(biāo)右鍵單擊頁(yè)面的房屋位置之后(比如“松樹(shù)橋”),將出現(xiàn)如下菜單選項(xiàng),如圖7-4所示。通過(guò)使用鼠標(biāo)左鍵單擊該菜單選項(xiàng)中的“檢查”選項(xiàng),Chrome瀏覽器呈現(xiàn)自帶的“開(kāi)發(fā)者工具”,并將焦點(diǎn)指向該“松樹(shù)橋”鏈接控件所在的具體的HTML頁(yè)面結(jié)構(gòu)當(dāng)中。這里的目的是為了獲取該“松樹(shù)橋”鏈接控件所屬的標(biāo)簽在頁(yè)面內(nèi)容中的class屬性值“positionInfo”,如圖7-5所示。圖7-4鼠標(biāo)右鍵單擊“松樹(shù)橋”鏈接控件的菜單選項(xiàng)圖7-5獲取“松樹(shù)橋”鏈接控件所屬標(biāo)簽的class值到此,根據(jù)任務(wù)需求,通過(guò)使用CHROME瀏覽器訪問(wèn)并分析了鏈家二手房網(wǎng)站的“松樹(shù)橋”鏈接控件在該頁(yè)面中的具體位置,狀態(tài)及其class屬性值,為下一步使用代碼的編寫(xiě)找準(zhǔn)了目標(biāo)?!八蓸?shù)橋”是二手房的位置信息,由于其是鏈接控件,通過(guò)右鍵點(diǎn)擊“檢查”可以找到具體位置。但二手房的戶型、房?jī)r(jià)等信息不是控件,無(wú)法通過(guò)右鍵點(diǎn)擊“檢查”進(jìn)行定位。為了定位二手房的其他信息,可以使用CHROME瀏覽器的“開(kāi)發(fā)者工具”的搜索功能進(jìn)行定位。比如需要定位二手房的房?jī)r(jià)信息,如圖7-6所示,在搜索欄中輸入“115”,可以定位房?jī)r(jià)信息的所在位置。圖7-6房?jī)r(jià)信息所在頁(yè)面位置因此,進(jìn)一步獲取房?jī)r(jià)所屬的標(biāo)簽在頁(yè)面內(nèi)容中的class屬性值“totalPricetotalPrice2”,如圖7-7所示。二手房的戶型、面積、裝修類(lèi)型、樓層、房屋類(lèi)型、均價(jià)等其他信息可以通過(guò)同樣的方法搜索從而定位到準(zhǔn)確的位置,獲取相應(yīng)的class值。圖7-7獲取房?jī)r(jià)所屬標(biāo)簽的class值數(shù)據(jù)安全不僅包括公民個(gè)人的數(shù)據(jù)安全,還包括企業(yè)和政府的數(shù)據(jù)安全。公民數(shù)據(jù)安全涉及個(gè)人隱私和生命安全,企業(yè)數(shù)據(jù)安全涉及商業(yè)秘密和企業(yè)權(quán)益,政府?dāng)?shù)據(jù)安全涉及國(guó)家秘密和公共利益,任何一個(gè)方面的數(shù)據(jù)安全問(wèn)題處理不好,都會(huì)影響到政治安全、社會(huì)穩(wěn)定、國(guó)家興衰。數(shù)據(jù)安全法的實(shí)施,將有助于進(jìn)一步提升國(guó)家數(shù)據(jù)安全保障能力,有助于加強(qiáng)我國(guó)應(yīng)對(duì)因數(shù)據(jù)引發(fā)的國(guó)家安全風(fēng)險(xiǎn)與挑戰(zhàn),有助于維護(hù)國(guó)家主權(quán)、安全和發(fā)展利益。數(shù)據(jù)采集為全面數(shù)據(jù)安全管理提供數(shù)據(jù)支撐。數(shù)據(jù)采集作為數(shù)據(jù)安全建設(shè)的第一步,需將分布在各業(yè)務(wù)系統(tǒng)中的用戶行為數(shù)據(jù)、業(yè)務(wù)支撐數(shù)據(jù)、安全事件等數(shù)據(jù)信息進(jìn)行采集、存儲(chǔ),為后續(xù)的數(shù)據(jù)審計(jì)、分析、挖掘以及安全運(yùn)營(yíng)等提供數(shù)據(jù)支撐。因此,構(gòu)建以大數(shù)據(jù)技術(shù)為基礎(chǔ)的數(shù)據(jù)采集系統(tǒng)勢(shì)在必行,成為各企業(yè)的共同選擇。7.2.2數(shù)據(jù)獲取在對(duì)鏈家二手房網(wǎng)頁(yè)進(jìn)行分析之后,現(xiàn)在來(lái)獲取鏈家二手房網(wǎng)頁(yè)中地區(qū)(region)、戶型(house_type)、面積(area_list)、裝修類(lèi)型(decorate_type)、樓層(floor_type)、房屋類(lèi)型(building_type)、售價(jià)(total_price)、單價(jià)(avg_price)的靜態(tài)數(shù)據(jù)。在對(duì)頁(yè)面進(jìn)行了分析之后,現(xiàn)在就可以開(kāi)始使用requests庫(kù)編寫(xiě)自定義的爬蟲(chóng)代碼對(duì)該部分的靜態(tài)數(shù)據(jù)直接進(jìn)行獲取了。1)導(dǎo)入爬蟲(chóng)代碼需要使用的requests庫(kù)用于獲取URL的頁(yè)面響應(yīng)數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的精確定位和操作。importrequests2)構(gòu)造爬蟲(chóng)代碼請(qǐng)求該URL的Headers頭部信息。在開(kāi)發(fā)者工具的“Network”選項(xiàng)卡下的“Headers”選項(xiàng)卡中得到該默認(rèn)URL的Headers頭部信息。其目的是向智通人才網(wǎng)的后臺(tái)服務(wù)器隱藏爬蟲(chóng)代碼的真實(shí)身份,讓爬蟲(chóng)代碼帶著這些請(qǐng)求信息偽裝成瀏覽器正常訪問(wèn)該網(wǎng)站服務(wù)器的狀態(tài),而不被服務(wù)器的反爬措施發(fā)現(xiàn)。headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.108Safari/537.36'}3)聲明變量url用于獲取指定的爬取的URL。這里將鏈家二手房頁(yè)面的URL賦值給url。url='cq.lianjia/ershoufang/#d#'temp_url=url.replace("#d#",f"pg{idx}")4)聲明變量response用于獲取requests庫(kù)的get方法從上一步指定的url和headers中獲取的頁(yè)面響應(yīng)數(shù)據(jù)。
response=requests.get(url,headers=headers)5)使用BeautifulSoup庫(kù)解析頁(yè)面,進(jìn)一步精確獲取相應(yīng)的class值。soup=BeautifulSoup(response.text,"html.parser")lis=soup.find('ul',class_='sellListContent')6)使用for循環(huán)語(yǔ)句遍歷各個(gè)<div>標(biāo)簽以獲取所有<div>標(biāo)簽中相應(yīng)class值的靜態(tài)數(shù)據(jù),包括:地區(qū)(region)、戶型(house_type)、面積(area_list)、裝修類(lèi)型(decorate_type)、樓層(floor_type)、房屋類(lèi)型(building_type)、售價(jià)(total_price)、單價(jià)(avg_price)的數(shù)據(jù)。通過(guò)分析<div>的結(jié)構(gòu)和內(nèi)容后可以發(fā)現(xiàn),任務(wù)所需要的數(shù)據(jù)均位于各自<div>標(biāo)簽中的不同位置。因此,這里需要獲取每一個(gè)<div>標(biāo)簽中的指定class的內(nèi)容。以房屋信息為例,需要獲取class值為'houseInfo'的內(nèi)容,即“2室1廳|87.76平米|南|精裝|中樓層(共32層)|2008年建|塔樓”,如圖7-8所示。圖7-8獲取class值為'houseInfo'中的指定內(nèi)容由于'houseInfo'中整合了戶型、面積、裝修類(lèi)型、樓層、房屋類(lèi)型等信息,需要對(duì)該信息進(jìn)行進(jìn)一步分離,從而得到單獨(dú)的數(shù)據(jù)。'houseInfo'爬取代碼如下。二手房的地區(qū)、售價(jià)及均價(jià)等信息可以通過(guò)同樣的方法可以爬取相應(yīng)的數(shù)據(jù)。具體代碼見(jiàn)完整代碼。到此,通過(guò)使用requests庫(kù)和BeautifulSoup庫(kù)編寫(xiě)自定義爬蟲(chóng)代碼實(shí)現(xiàn)了對(duì)鏈家二手房頁(yè)面的靜態(tài)數(shù)據(jù)的獲取。xxs=lis.find_all('div',class_='houseInfo')#print(type(xxs))forainxxs:#list1=[]xx=a.text.replace('','').replace('(','_').replace(')','').split('|')#print(xx)#area_list.append(xx)house_type.append(xx[0])area_list.append(xx[1])decorate_type.append(xx[3])floor_type.append(xx[4])building_type.append(xx[-1])
數(shù)據(jù)采集與可視化案例 本章學(xué)習(xí)目標(biāo)●分析鏈家二手房的網(wǎng)頁(yè)結(jié)構(gòu)和內(nèi)容●使用requests庫(kù)編寫(xiě)爬蟲(chóng)代碼獲取指定數(shù)據(jù)●使用BeautifulSoup實(shí)現(xiàn)數(shù)據(jù)的解析●使用pymysql庫(kù)實(shí)現(xiàn)數(shù)據(jù)的持久化●使用flask和echarts實(shí)現(xiàn)數(shù)據(jù)可視化7.3.3數(shù)據(jù)持久化保存前面已經(jīng)通過(guò)爬蟲(chóng)實(shí)現(xiàn)鏈家二手房數(shù)據(jù)獲取,但是這些數(shù)據(jù)都只是存儲(chǔ)在內(nèi)存之中,并沒(méi)有對(duì)其規(guī)范化和持久化的管理。因此,為了能夠讓數(shù)據(jù)結(jié)構(gòu)化,使數(shù)據(jù)之間具有聯(lián)系,從而更好地面向整個(gè)系統(tǒng),同時(shí)提高數(shù)據(jù)的共享性、擴(kuò)展性和獨(dú)立性,降低冗余度,這里將使用DBMS對(duì)其統(tǒng)一管理和控制。這里將使用MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。請(qǐng)務(wù)必提前安裝好MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng),本案例使用的是NavicatPremium數(shù)據(jù)管理工具。1.數(shù)據(jù)持久化保存通過(guò)調(diào)用pymysql模塊,使用Python語(yǔ)言實(shí)現(xiàn)連接和操作MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)NavicatPremium中指定的數(shù)據(jù)庫(kù)和表的創(chuàng)建和插入操作,以下七步詳細(xì)介紹了數(shù)據(jù)持久化的主要過(guò)程。1)導(dǎo)入pymysql模塊用于在Python中連接和操作MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。importpymysql2)使用pymysql的connect()方法,通過(guò)傳入指定的參數(shù)實(shí)現(xiàn)對(duì)MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)的登錄和具體數(shù)據(jù)庫(kù)的連接操作。這里的參數(shù)分別是:host表示將要連接的設(shè)備地址,localhost表示本機(jī)。user和password表示登錄到MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)的賬號(hào)和密碼。port表示登錄到該數(shù)據(jù)庫(kù)管理系統(tǒng)過(guò)程中使用的端口號(hào),這里是3306。db表示在該數(shù)據(jù)庫(kù)管理系統(tǒng)中已經(jīng)存在的數(shù)據(jù)庫(kù)。這里需要先在NavicatPremium中創(chuàng)建該數(shù)據(jù)庫(kù)。最后,將該方法的返回值返回給變量db。db=pymysql.connect(host='localhost',user='root',password='xxxx',port=3306,db='test')3)使用cursor()方法是實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)db執(zhí)行SQL操作的基礎(chǔ)。cursor=db.cursor()4)聲明變量sql用于接收以字符串形式編寫(xiě)的SQL語(yǔ)句。該SQL語(yǔ)句的含義是:使用CREATETABLE命令創(chuàng)建一個(gè)名為lianjia的數(shù)據(jù)表。該表中包含region、house_type、area_list、decorate_type、floor_type、building_type、total_price、avg_price共八個(gè)字段。這八個(gè)字段正好用于接收前面對(duì)應(yīng)的二手房數(shù)據(jù)信息。sql="""CREATETABLE`lianjia`(`id`int(10)NOTNULLAUTO_INCREMENT,`region`char(20)NOTNULL,`house_type`char(20)NOTNULL,`area_list`char(20)DEFAULTNULL,`decorate_type`char(20)DEFAULTNULL,`floor_type`char(20)DEFAULTNULL,`building_type`char(20)DEFAULTNULL,`total_price`char(20)DEFAULTNULL,`avg_price`char(20)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;"""5)使用execute()方法實(shí)現(xiàn)上面的SQL語(yǔ)句。在NavicatPremium中的test數(shù)據(jù)庫(kù)中創(chuàng)建該數(shù)據(jù)表。cursor.execute(sql)6)使用SQL的INSERTINTO命令向指定的數(shù)據(jù)表lianjia中的指定的字段region、house_type、area_list、decorate_type、floor_type、building_type、total_price、avg_price中插入數(shù)據(jù)。cursor.execute("INSERTINTOlianjiaVALUES(%s,%s,%s,%s,%s,%s,%s,%s)",(region,house_type,area_list,decorate_type,floor_type,building_type,total_price,avg_price))到此,通過(guò)使用pymysql模塊成功地實(shí)現(xiàn)了Python連接MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)。在MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)的test數(shù)據(jù)庫(kù)中情況,如圖7-9所示。圖7-9數(shù)據(jù)持久化保存為了直觀的了解爬取的數(shù)據(jù),利用flask和echarts技術(shù)對(duì)數(shù)據(jù)進(jìn)行可視化處理。1)使用flask技術(shù)生成一個(gè)可視化模板頁(yè)面,并從數(shù)據(jù)庫(kù)中讀取相應(yīng)的數(shù)據(jù),結(jié)合ECharts生成的不同的圖形,呈現(xiàn)豐富的可視化效果。如圖7-10所示。圖7-10的四種圖形分別是折線圖、餅圖、條形圖及表格數(shù)據(jù),均以動(dòng)態(tài)數(shù)據(jù)呈現(xiàn)。7.3.4數(shù)據(jù)可視化圖7-10可視化界面在line1.js中,echarts生成折線圖。如圖7-11所示。圖7-11折線圖在pie1.js中,echarts生成餅圖。如圖7-12所示。圖7-12餅圖在bar1.js中,echarts生成條形圖。如圖7-13所示。圖7-13條形圖在ajax2.js中,echarts生成表格數(shù)據(jù)。如圖7-14所示。圖7-14表格
數(shù)據(jù)采集與可視化案例 本章學(xué)習(xí)目標(biāo)●pandas讀取二手房數(shù)據(jù)●使用pandas對(duì)數(shù)據(jù)進(jìn)行探索●使用pandas對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過(guò)pandas讀取二手房數(shù)據(jù),并對(duì)其進(jìn)行探索和轉(zhuǎn)換。(1)Python中導(dǎo)入pandas、pymysql、re和tabulate。7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過(guò)pandas讀取二手房數(shù)據(jù),并對(duì)其進(jìn)行探索和轉(zhuǎn)換。(2)設(shè)置主函數(shù),里面包括了數(shù)據(jù)讀取、探索清理數(shù)據(jù)以及轉(zhuǎn)換數(shù)據(jù)。7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過(guò)pandas讀取二手房數(shù)據(jù),并對(duì)其進(jìn)行探索和轉(zhuǎn)換。(3)從數(shù)據(jù)庫(kù)里讀取數(shù)據(jù)。7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過(guò)pandas讀取二手房數(shù)據(jù),并對(duì)其進(jìn)行探索和轉(zhuǎn)換。(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版拌合料生產(chǎn)設(shè)備維修與保養(yǎng)合同4篇
- 2025年度農(nóng)業(yè)休閑觀光區(qū)綠化景觀建設(shè)與運(yùn)營(yíng)合同4篇
- 2025版安防弱電系統(tǒng)集成服務(wù)合同3篇
- 2025年度個(gè)人肖像攝影合同范本集4篇
- 二零二五年度南京體育健身行業(yè)勞務(wù)派遣合同
- 二零二五年度木材行業(yè)安全生產(chǎn)責(zé)任保險(xiǎn)合同
- 第8~9講 反應(yīng)動(dòng)力學(xué)基礎(chǔ)知識(shí)
- 2025年度建筑幕墻工程安全質(zhì)量責(zé)任合同4篇
- 二零二五年度農(nóng)業(yè)生態(tài)環(huán)境保護(hù)與修復(fù)服務(wù)合同
- 二零二五年度使用知識(shí)產(chǎn)權(quán)許可合同
- 中國(guó)末端執(zhí)行器(靈巧手)行業(yè)市場(chǎng)發(fā)展態(tài)勢(shì)及前景戰(zhàn)略研判報(bào)告
- 北京離婚協(xié)議書(shū)(2篇)(2篇)
- 2025中國(guó)聯(lián)通北京市分公司春季校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 康復(fù)醫(yī)學(xué)科患者隱私保護(hù)制度
- Samsung三星SMARTCAMERANX2000(20-50mm)中文說(shuō)明書(shū)200
- 2024年藥品質(zhì)量信息管理制度(2篇)
- 2024年安徽省高考地理試卷真題(含答案逐題解析)
- 廣東省廣州市2024年中考數(shù)學(xué)真題試卷(含答案)
- 高中學(xué)校開(kāi)學(xué)典禮方案
- 內(nèi)審檢查表完整版本
- 3級(jí)人工智能訓(xùn)練師(高級(jí))國(guó)家職業(yè)技能鑒定考試題及答案
評(píng)論
0/150
提交評(píng)論