版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Python商業(yè)數(shù)據(jù)分析網(wǎng)絡(luò)數(shù)據(jù)抓取15.1案例背景數(shù)據(jù)獲取是數(shù)據(jù)分析的基礎(chǔ)?;ヂ?lián)網(wǎng)上積累了海量信息和知識,蘊含著豐富的商業(yè)和學(xué)術(shù)價值。電商網(wǎng)站的售后評論信息有助于企業(yè)識別用戶偏好和產(chǎn)品缺陷;線上二手房價格的長期監(jiān)測有助于預(yù)測區(qū)域房價變動;投資論壇中對股票的討論有助于識別投資者情緒;微博等社交媒體中的用戶發(fā)帖能體現(xiàn)民眾對某熱點事件的看法。本案例將介紹如何利用Python編程,從互聯(lián)網(wǎng)上進行數(shù)據(jù)抓取。15.1案例背景學(xué)完本案例,你應(yīng)該能夠:解釋HTML語言的作用,了解其與編程語言的區(qū)別;描述HTML語言中的標(biāo)簽、元素、屬性;了解在瀏覽器中查看并定位網(wǎng)頁HTML代碼的方式;使用urllib和Requests庫實現(xiàn)HTML源代碼獲取,BeautifulSoup庫實現(xiàn)目標(biāo)數(shù)據(jù)定位;了解針對異步加載技術(shù)的數(shù)據(jù)抓取方法。15.1背景與問題寫在前面:合理進行數(shù)據(jù)抓取,不得干擾服務(wù)器正常運行;關(guān)注數(shù)據(jù)抓取的邏輯和技術(shù),而不是記憶個別網(wǎng)站的抓取規(guī)律;遵守相關(guān)法律法規(guī),對提供數(shù)據(jù)的網(wǎng)站心存敬意和尊重。15.2.1數(shù)據(jù)抓取的基本思想想一想:數(shù)據(jù)抓取有哪些步驟?假設(shè)你用手動的方式,抓取股票價格信息:15.2.1數(shù)據(jù)抓取的基本思想想一想:數(shù)據(jù)抓取有哪些步驟?假設(shè)你用手動的方式,抓取股票價格信息:找到包含該信息的網(wǎng)頁(如東方財富網(wǎng));打開網(wǎng)頁找到股價信息的位置;將股價信息復(fù)制到數(shù)據(jù)文件中;(如果要抓取多只股票的信息)跳轉(zhuǎn)到下一只股票。15.2.1數(shù)據(jù)抓取的基本思想我們將在程序編寫中一一實現(xiàn)這些功能。困難:程序并不能向人一樣理解某些概念;什么是標(biāo)題欄?什么是上方?什么是左上角?這需要我們從程序去重新認(rèn)識網(wǎng)頁,需要了解:網(wǎng)頁的基礎(chǔ)知識;瀏覽器原理。15.2.2 網(wǎng)頁基礎(chǔ)知識和瀏覽器原理網(wǎng)頁是源代碼在瀏覽器下顯示的結(jié)果。代碼經(jīng)過IE、Safari等瀏覽器,變成用戶看到的可視化界面。新浪網(wǎng)部分源代碼15.2.2 網(wǎng)頁基礎(chǔ)知識和瀏覽器原理網(wǎng)頁主要由HTML(HyperTextMarkupLanguage)代碼編寫。類比HTML與Python15.2.3 HTML語言簡介HTML是一種標(biāo)記語言;簡要介紹HTML標(biāo)簽、元素、屬性等相關(guān)概念,通過實例說明HTML語言和網(wǎng)頁中數(shù)據(jù)的聯(lián)系;可以利用W3school等線上資源深入學(xué)習(xí)。15.2.3 HTML語言簡介標(biāo)記語言通過標(biāo)記標(biāo)簽對文本進行編輯;可以用Sublime等程序來編寫HTML代碼,并將后綴保存為“.html”;使用瀏覽器打開,就會看到可視化界面。HTML示例及運行結(jié)果15.2.3 HTML語言簡介h:標(biāo)題(Headline);h后面的數(shù)字表示層級,數(shù)字越小層級越高、字號越大;p:段落(Paragraph)。<h3></h3>、<p></p>等用來修飾的標(biāo)記稱為HTML標(biāo)簽;一般成對出現(xiàn),表示被修飾內(nèi)容的開始和結(jié)束;結(jié)束標(biāo)簽帶有“/”符號;從開始到結(jié)束標(biāo)簽的所有內(nèi)容被稱為HTML元素。HTML元素可以嵌套。15.2.3 HTML語言簡介其他值得關(guān)注的標(biāo)簽:超鏈接<a>:a表示錨點(Anchor);結(jié)構(gòu)示例:<ahref="網(wǎng)址">被修飾內(nèi)容</a>我們更關(guān)注跳轉(zhuǎn)的網(wǎng)址,即“href=”之后的內(nèi)容;這部分信息成為HTML元素的屬性;屬性包括屬性名和屬性值;這里href是屬性名,等號右側(cè)的網(wǎng)址是屬性值。15.2.3 HTML語言簡介其他值得關(guān)注的標(biāo)簽:列表相關(guān)標(biāo)簽<ol>、<ul>、<li>:ol表示有序列表,ordered
list;ul表示無序列表,unordered
list;li表示列表中的元素,listitem。有序列表和無序列表15.2.3 HTML語言簡介實戰(zhàn)環(huán)節(jié):從HTML中找到需要的數(shù)據(jù)。以鏈家二手房網(wǎng)站為例:網(wǎng)頁上有哪些信息?15.2.3 HTML語言簡介實戰(zhàn)環(huán)節(jié):從HTML中找到需要的數(shù)據(jù)。以鏈家二手房網(wǎng)站為例:網(wǎng)頁上有哪些信息?總價單價位置信息房屋信息每套房源的具體信息頁的網(wǎng)址15.2.3 HTML語言簡介實戰(zhàn)環(huán)節(jié):從HTML中找到需要的數(shù)據(jù)。以鏈家二手房網(wǎng)站為例:進入每一套房源,我們還可以看到更多信息。15.2.3 HTML語言簡介我們從列表信息頁開始。找到源代碼:在瀏覽器中某頁面的空白處單擊鼠標(biāo)右鍵,選擇“查看網(wǎng)頁源代碼”;或使用“開發(fā)者工具”功能;可以在具體的數(shù)據(jù)上,使用瀏覽器的“檢查”或“審查元素”功能,快速定位目標(biāo)數(shù)據(jù)。15.2.3 HTML語言簡介從圖中可以看到哪些所需的數(shù)據(jù)?這些數(shù)據(jù)所在的HTML元素有哪些特征?鏈家源代碼示例15.2.3 HTML語言簡介從鏈家案例中可以看出,不同的房源背后的代碼結(jié)構(gòu)基本相似。相似界面背后存在相似的源代碼,是實現(xiàn)自動數(shù)據(jù)抓取的基礎(chǔ)。15.3用Python實現(xiàn)數(shù)據(jù)爬取從HTML視角理解數(shù)據(jù)抓取流程15.3.1 獲得網(wǎng)頁HTML源代碼工具:urllib模塊;或Requests等第三方庫。以urllib模塊的request.urlopen()函數(shù)為例:返回的是http.client.HTTPResponse類,是本次請求的響應(yīng);狀態(tài)碼是200,即請求成功。常見狀態(tài)碼釋義:200
–
OK;400
-BadRequest;403-Forbidden;404-NotFound
。15.3.1 獲得網(wǎng)頁HTML源代碼使用HTTPResponse.read()方法讀取響應(yīng)內(nèi)容。由于返回的是bytes形式的源代碼,需要使用decode()函數(shù)進行解碼,使得中文正常顯示。
解碼前解碼后15.3.1 獲得網(wǎng)頁HTML源代碼請同學(xué)們自主嘗試獲取其他網(wǎng)頁的源代碼。當(dāng)urlopen未能順利獲得源代碼:有時需要使用ssl模塊解決證書異常的問題;網(wǎng)頁被壓縮,可以使用Requests自動解壓縮。15.3.1 獲得網(wǎng)頁HTML源代碼使用Requests抓取騰訊首頁示例:優(yōu)點:自動解壓解碼;自動處理SSL整數(shù)問題。返回對象:requests.models.Response類;.status_code:狀態(tài)碼;.text:字符串格式的源代碼;.encoding:網(wǎng)頁編碼格式??梢允褂胷esponse.encoding='utf-8'
來手動定義。15.3.2 通過HTML標(biāo)簽定位數(shù)據(jù)獲取源代碼后,使用BeautifulSoup定位目標(biāo)數(shù)據(jù)。需要用pip預(yù)安裝BeautifulSoup4和lxml解析器。15.3.2 通過HTML標(biāo)簽定位數(shù)據(jù)實例演示:使用BeautifulSoup4從北京鏈家二手房網(wǎng)頁中提取數(shù)據(jù)。獲取源代碼并轉(zhuǎn)為BeautifulSoup對象。15.3.2 通過HTML標(biāo)簽定位數(shù)據(jù)實例演示:使用BeautifulSoup4從北京鏈家二手房網(wǎng)頁中提取數(shù)據(jù)。獲取源代碼并轉(zhuǎn)為BeautifulSoup對象。使用find()或find_all()提取特定的HTML元素。find()方法用來查找符合條件的第一個元素;find_all()方法用來查找符合條件的所有元素,以列表形式返回??梢钥闯鲈摼W(wǎng)頁共有547個<a>元素。15.3.2 通過HTML標(biāo)簽定位數(shù)據(jù)實例演示:使用BeautifulSoup4從北京鏈家二手房網(wǎng)頁中提取數(shù)據(jù)。獲取源代碼并轉(zhuǎn)為BeautifulSoup對象。使用find()或find_all()提取特定的HTML元素。在find()或find_all()方法中加入條件:從網(wǎng)頁中可以看出,所有房源名稱均在class="title"的<a>元素中;加入屬性約束class
=
"title"。注:由于class是Python語言的保留字段,需要在代碼中寫成class_可以看出共找到30個結(jié)果,對應(yīng)本頁的30套房源。15.3.2 通過HTML標(biāo)簽定位數(shù)據(jù)實例演示:使用BeautifulSoup4從北京鏈家二手房網(wǎng)頁中提取數(shù)據(jù)。獲取源代碼并轉(zhuǎn)為BeautifulSoup對象。使用find()或find_all()提取特定的HTML元素。在find()或find_all()方法中加入條件。使用string屬性提取內(nèi)容,或提取屬性值。房源名稱是<a>元素的內(nèi)容,用string提??;房源詳情頁網(wǎng)址是href屬性的值。要確保找到的規(guī)律是提取目標(biāo)數(shù)據(jù)的“充要條件”。15.3.2 通過HTML標(biāo)簽定位數(shù)據(jù)請同學(xué)們自己嘗試提取房源的下列信息:房源名稱;房源詳情頁網(wǎng)址;房源總價;房源單價;位置信息;房源信息;房源標(biāo)簽;……如果遇到困難,請思考:提取數(shù)據(jù)的條件對不對?結(jié)果數(shù)量和預(yù)期一致嗎?是否混入了不符合要求的元素?string無法處理件套元素的內(nèi)容,可以嘗試結(jié)合contents和get_text()方法。15.3.2 通過HTML標(biāo)簽定位數(shù)據(jù)參考代碼如下:圖中顯示了如何提取第一套房源的信息,如何使用for循環(huán),遍歷提取30套房源的信息?15.3.3 處理“翻頁”數(shù)據(jù)網(wǎng)址變化是最常見的翻頁方式:點擊鏈家二手房的第2-10頁,觀察網(wǎng)址變化。異步加載網(wǎng)址不改變的翻頁方式;如微博、QQ空間等;使用開發(fā)者工具中的網(wǎng)絡(luò)監(jiān)控功能,找到后臺實際訪問的網(wǎng)址。15.3.3 處理“翻頁”數(shù)據(jù)異步加載示例:打開Chrome瀏覽器的網(wǎng)絡(luò)監(jiān)控工具。打開微博首頁,翻動界面,觀察不斷加載的新網(wǎng)址。需要耐心尋找其中有規(guī)律的內(nèi)容;得到的網(wǎng)址不是一成不變的;如果網(wǎng)站改版升級,需要重新尋找。15.4數(shù)據(jù)抓取技巧合理進行數(shù)據(jù)抓取,不得干擾服務(wù)器正常運行。務(wù)必加入暫停機制;time.sleep()。更改請求頭:編碼、cookie、用戶代理使用請求頭
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石油行業(yè)會計個人工作計劃
- 藝術(shù)教育教學(xué)活動設(shè)計計劃
- 數(shù)據(jù)驅(qū)動的倉庫存貨管理模式計劃
- 教學(xué)工作總結(jié)報告總結(jié)計劃
- 豐富學(xué)校體育活動的計劃
- 機械制圖單元測試及答案
- 新生兒科專科護理操作流程圖考核標(biāo)準(zhǔn)匯編
- 高中化學(xué)《醇和酚》學(xué)案
- 2021年高考物理模擬題精練專題3
- 醫(yī)院行政個人工作年終總結(jié)
- 北京市海淀區(qū)2024學(xué)年七年級上學(xué)期語文期中試卷【含參考答案】
- 2023-2024學(xué)年北京市東城區(qū)東直門中學(xué)七年級(上)期中數(shù)學(xué)試卷【含解析】
- 新制定《公平競爭審查條例》主題
- 小學(xué)體育課件《運動損傷的預(yù)防和處理》
- 個人招生計劃方案
- 2024年中煤集團西南分公司招聘筆試參考題庫附帶答案詳解
- 多囊卵巢綜合征的診斷和治療-課件
- 《漢服》PPT課件(完整版)
- 平底孔試塊制作規(guī)范
- 藥店110種常見疾病的癥狀及關(guān)聯(lián)用藥方案
- 三年級語文上冊期中考試真題滬教版
評論
0/150
提交評論