版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)采集與可視化案例 本章學(xué)習(xí)目標(biāo)●分析鏈家二手房的網(wǎng)頁結(jié)構(gòu)和內(nèi)容●使用requests庫編寫爬蟲代碼獲取指定數(shù)據(jù)●使用BeautifulSoup實現(xiàn)數(shù)據(jù)的解析●使用pymysql庫實現(xiàn)數(shù)據(jù)的持久化●使用flask和echarts實現(xiàn)數(shù)據(jù)可視化7.3鏈家二手房數(shù)據(jù)采集與可視化7.3.1頁面分析根據(jù)前面的任務(wù)描述,可以知道本爬蟲案例的具體需求,包括技術(shù)需求和數(shù)據(jù)需求,這是第一步。接下來將對頁面結(jié)構(gòu)和內(nèi)容進(jìn)行深度地分析,目的是為了找到鏈家二手房網(wǎng)頁中跟具體需求相關(guān)的業(yè)務(wù)邏輯和業(yè)務(wù)數(shù)據(jù)。如圖7-3所示,該頁面能夠清楚地定位到二手房的相關(guān)信息,包括地區(qū)、戶型、面積、裝修類型、樓層、房屋類型、售價等信息。因此,該爬蟲綜合案例使用的URL將是這個擁有二手房相關(guān)信息的頁面。圖7-3鏈家二手房網(wǎng)頁數(shù)據(jù)使用鼠標(biāo)右鍵單擊頁面的房屋位置之后(比如“松樹橋”),將出現(xiàn)如下菜單選項,如圖7-4所示。通過使用鼠標(biāo)左鍵單擊該菜單選項中的“檢查”選項,Chrome瀏覽器呈現(xiàn)自帶的“開發(fā)者工具”,并將焦點指向該“松樹橋”鏈接控件所在的具體的HTML頁面結(jié)構(gòu)當(dāng)中。這里的目的是為了獲取該“松樹橋”鏈接控件所屬的標(biāo)簽在頁面內(nèi)容中的class屬性值“positionInfo”,如圖7-5所示。圖7-4鼠標(biāo)右鍵單擊“松樹橋”鏈接控件的菜單選項圖7-5獲取“松樹橋”鏈接控件所屬標(biāo)簽的class值到此,根據(jù)任務(wù)需求,通過使用CHROME瀏覽器訪問并分析了鏈家二手房網(wǎng)站的“松樹橋”鏈接控件在該頁面中的具體位置,狀態(tài)及其class屬性值,為下一步使用代碼的編寫找準(zhǔn)了目標(biāo)?!八蓸錁颉笔嵌址康奈恢眯畔ⅲ捎谄涫擎溄涌丶?,通過右鍵點擊“檢查”可以找到具體位置。但二手房的戶型、房價等信息不是控件,無法通過右鍵點擊“檢查”進(jìn)行定位。為了定位二手房的其他信息,可以使用CHROME瀏覽器的“開發(fā)者工具”的搜索功能進(jìn)行定位。比如需要定位二手房的房價信息,如圖7-6所示,在搜索欄中輸入“115”,可以定位房價信息的所在位置。圖7-6房價信息所在頁面位置因此,進(jìn)一步獲取房價所屬的標(biāo)簽在頁面內(nèi)容中的class屬性值“totalPricetotalPrice2”,如圖7-7所示。二手房的戶型、面積、裝修類型、樓層、房屋類型、均價等其他信息可以通過同樣的方法搜索從而定位到準(zhǔn)確的位置,獲取相應(yīng)的class值。圖7-7獲取房價所屬標(biāo)簽的class值數(shù)據(jù)安全不僅包括公民個人的數(shù)據(jù)安全,還包括企業(yè)和政府的數(shù)據(jù)安全。公民數(shù)據(jù)安全涉及個人隱私和生命安全,企業(yè)數(shù)據(jù)安全涉及商業(yè)秘密和企業(yè)權(quán)益,政府?dāng)?shù)據(jù)安全涉及國家秘密和公共利益,任何一個方面的數(shù)據(jù)安全問題處理不好,都會影響到政治安全、社會穩(wěn)定、國家興衰。數(shù)據(jù)安全法的實施,將有助于進(jìn)一步提升國家數(shù)據(jù)安全保障能力,有助于加強(qiáng)我國應(yīng)對因數(shù)據(jù)引發(fā)的國家安全風(fēng)險與挑戰(zhàn),有助于維護(hù)國家主權(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)行采集、存儲,為后續(xù)的數(shù)據(jù)審計、分析、挖掘以及安全運營等提供數(shù)據(jù)支撐。因此,構(gòu)建以大數(shù)據(jù)技術(shù)為基礎(chǔ)的數(shù)據(jù)采集系統(tǒng)勢在必行,成為各企業(yè)的共同選擇。7.2.2數(shù)據(jù)獲取在對鏈家二手房網(wǎng)頁進(jìn)行分析之后,現(xiàn)在來獲取鏈家二手房網(wǎng)頁中地區(qū)(region)、戶型(house_type)、面積(area_list)、裝修類型(decorate_type)、樓層(floor_type)、房屋類型(building_type)、售價(total_price)、單價(avg_price)的靜態(tài)數(shù)據(jù)。在對頁面進(jìn)行了分析之后,現(xiàn)在就可以開始使用requests庫編寫自定義的爬蟲代碼對該部分的靜態(tài)數(shù)據(jù)直接進(jìn)行獲取了。1)導(dǎo)入爬蟲代碼需要使用的requests庫用于獲取URL的頁面響應(yīng)數(shù)據(jù),實現(xiàn)數(shù)據(jù)的精確定位和操作。importrequests2)構(gòu)造爬蟲代碼請求該URL的Headers頭部信息。在開發(fā)者工具的“Network”選項卡下的“Headers”選項卡中得到該默認(rèn)URL的Headers頭部信息。其目的是向智通人才網(wǎng)的后臺服務(wù)器隱藏爬蟲代碼的真實身份,讓爬蟲代碼帶著這些請求信息偽裝成瀏覽器正常訪問該網(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。這里將鏈家二手房頁面的URL賦值給url。url='cq.lianjia/ershoufang/#d#'temp_url=url.replace("#d#",f"pg{idx}")4)聲明變量response用于獲取requests庫的get方法從上一步指定的url和headers中獲取的頁面響應(yīng)數(shù)據(jù)。
response=requests.get(url,headers=headers)5)使用BeautifulSoup庫解析頁面,進(jìn)一步精確獲取相應(yīng)的class值。soup=BeautifulSoup(response.text,"html.parser")lis=soup.find('ul',class_='sellListContent')6)使用for循環(huán)語句遍歷各個<div>標(biāo)簽以獲取所有<div>標(biāo)簽中相應(yīng)class值的靜態(tài)數(shù)據(jù),包括:地區(qū)(region)、戶型(house_type)、面積(area_list)、裝修類型(decorate_type)、樓層(floor_type)、房屋類型(building_type)、售價(total_price)、單價(avg_price)的數(shù)據(jù)。通過分析<div>的結(jié)構(gòu)和內(nèi)容后可以發(fā)現(xiàn),任務(wù)所需要的數(shù)據(jù)均位于各自<div>標(biāo)簽中的不同位置。因此,這里需要獲取每一個<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'中整合了戶型、面積、裝修類型、樓層、房屋類型等信息,需要對該信息進(jìn)行進(jìn)一步分離,從而得到單獨的數(shù)據(jù)。'houseInfo'爬取代碼如下。二手房的地區(qū)、售價及均價等信息可以通過同樣的方法可以爬取相應(yīng)的數(shù)據(jù)。具體代碼見完整代碼。到此,通過使用requests庫和BeautifulSoup庫編寫自定義爬蟲代碼實現(xiàn)了對鏈家二手房頁面的靜態(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)頁結(jié)構(gòu)和內(nèi)容●使用requests庫編寫爬蟲代碼獲取指定數(shù)據(jù)●使用BeautifulSoup實現(xiàn)數(shù)據(jù)的解析●使用pymysql庫實現(xiàn)數(shù)據(jù)的持久化●使用flask和echarts實現(xiàn)數(shù)據(jù)可視化7.3.3數(shù)據(jù)持久化保存前面已經(jīng)通過爬蟲實現(xiàn)鏈家二手房數(shù)據(jù)獲取,但是這些數(shù)據(jù)都只是存儲在內(nèi)存之中,并沒有對其規(guī)范化和持久化的管理。因此,為了能夠讓數(shù)據(jù)結(jié)構(gòu)化,使數(shù)據(jù)之間具有聯(lián)系,從而更好地面向整個系統(tǒng),同時提高數(shù)據(jù)的共享性、擴(kuò)展性和獨立性,降低冗余度,這里將使用DBMS對其統(tǒng)一管理和控制。這里將使用MYSQL數(shù)據(jù)庫管理系統(tǒng)。請務(wù)必提前安裝好MYSQL數(shù)據(jù)庫管理系統(tǒng),本案例使用的是NavicatPremium數(shù)據(jù)管理工具。1.數(shù)據(jù)持久化保存通過調(diào)用pymysql模塊,使用Python語言實現(xiàn)連接和操作MYSQL數(shù)據(jù)庫管理系統(tǒng)NavicatPremium中指定的數(shù)據(jù)庫和表的創(chuàng)建和插入操作,以下七步詳細(xì)介紹了數(shù)據(jù)持久化的主要過程。1)導(dǎo)入pymysql模塊用于在Python中連接和操作MYSQL數(shù)據(jù)庫管理系統(tǒng)。importpymysql2)使用pymysql的connect()方法,通過傳入指定的參數(shù)實現(xiàn)對MYSQL數(shù)據(jù)庫管理系統(tǒng)的登錄和具體數(shù)據(jù)庫的連接操作。這里的參數(shù)分別是:host表示將要連接的設(shè)備地址,localhost表示本機(jī)。user和password表示登錄到MYSQL數(shù)據(jù)庫管理系統(tǒng)的賬號和密碼。port表示登錄到該數(shù)據(jù)庫管理系統(tǒng)過程中使用的端口號,這里是3306。db表示在該數(shù)據(jù)庫管理系統(tǒng)中已經(jīng)存在的數(shù)據(jù)庫。這里需要先在NavicatPremium中創(chuàng)建該數(shù)據(jù)庫。最后,將該方法的返回值返回給變量db。db=pymysql.connect(host='localhost',user='root',password='xxxx',port=3306,db='test')3)使用cursor()方法是實現(xiàn)對數(shù)據(jù)庫db執(zhí)行SQL操作的基礎(chǔ)。cursor=db.cursor()4)聲明變量sql用于接收以字符串形式編寫的SQL語句。該SQL語句的含義是:使用CREATETABLE命令創(chuàng)建一個名為lianjia的數(shù)據(jù)表。該表中包含region、house_type、area_list、decorate_type、floor_type、building_type、total_price、avg_price共八個字段。這八個字段正好用于接收前面對應(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()方法實現(xiàn)上面的SQL語句。在NavicatPremium中的test數(shù)據(jù)庫中創(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))到此,通過使用pymysql模塊成功地實現(xiàn)了Python連接MYSQL數(shù)據(jù)庫管理系統(tǒng)。在MYSQL數(shù)據(jù)庫管理系統(tǒng)的test數(shù)據(jù)庫中情況,如圖7-9所示。圖7-9數(shù)據(jù)持久化保存為了直觀的了解爬取的數(shù)據(jù),利用flask和echarts技術(shù)對數(shù)據(jù)進(jìn)行可視化處理。1)使用flask技術(shù)生成一個可視化模板頁面,并從數(shù)據(jù)庫中讀取相應(yīng)的數(shù)據(jù),結(jié)合ECharts生成的不同的圖形,呈現(xiàn)豐富的可視化效果。如圖7-10所示。圖7-10的四種圖形分別是折線圖、餅圖、條形圖及表格數(shù)據(jù),均以動態(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對數(shù)據(jù)進(jìn)行探索●使用pandas對數(shù)據(jù)進(jìn)行轉(zhuǎn)換7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過pandas讀取二手房數(shù)據(jù),并對其進(jìn)行探索和轉(zhuǎn)換。(1)Python中導(dǎo)入pandas、pymysql、re和tabulate。7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過pandas讀取二手房數(shù)據(jù),并對其進(jìn)行探索和轉(zhuǎn)換。(2)設(shè)置主函數(shù),里面包括了數(shù)據(jù)讀取、探索清理數(shù)據(jù)以及轉(zhuǎn)換數(shù)據(jù)。7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過pandas讀取二手房數(shù)據(jù),并對其進(jìn)行探索和轉(zhuǎn)換。(3)從數(shù)據(jù)庫里讀取數(shù)據(jù)。7.3.5數(shù)據(jù)探索與轉(zhuǎn)換這里通過pandas讀取二手房數(shù)據(jù),并對其進(jìn)行探索和轉(zhuǎn)換。(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 瑜伽館瑜伽會員卡轉(zhuǎn)讓合同
- 半夏糖漿遺傳變異及藥效相關(guān)研究
- 創(chuàng)新對產(chǎn)業(yè)影響分析
- 2024版住宅裝飾裝修工程施工合同范本
- 2024版網(wǎng)上廣告經(jīng)營權(quán)承包合同
- 2024版重大科技創(chuàng)新項目專項資金無償撥款合同
- 2024版天津市移動電話買賣合同
- 2023-2024學(xué)年全國小學(xué)二年級上科學(xué)人教版期末考試試卷(含答案解析)
- 2025屆上海外國語大學(xué)附屬外國語學(xué)校數(shù)學(xué)高一上期末復(fù)習(xí)檢測試題含解析
- 環(huán)境評價師環(huán)境影響評價技術(shù)導(dǎo)則與標(biāo)準(zhǔn)考試試題含答案第201期
- 碳鋼管預(yù)鈍膜方案
- 神經(jīng)內(nèi)科課件
- 鋰電池環(huán)境試驗應(yīng)急預(yù)案
- 大學(xué)食堂原料物資豬肉采購?fù)稑?biāo)方案(技術(shù)標(biāo))
- 金融科技在保險中的應(yīng)用
- 貨運服務(wù)方案
- 2023江蘇省安監(jiān)局直屬事業(yè)單位招聘30人筆試參考題庫(共500題)答案詳解版
- 關(guān)于農(nóng)村公路災(zāi)毀保險試點工作的幾點思考
- 圖形的相似中考復(fù)習(xí)
- 西安市經(jīng)濟(jì)社會發(fā)展情況
評論
0/150
提交評論