版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Python商業(yè)數(shù)據(jù)分析網(wǎng)絡數(shù)據(jù)抓取15.1案例背景數(shù)據(jù)獲取是數(shù)據(jù)分析的基礎?;ヂ?lián)網(wǎng)上積累了海量信息和知識,蘊含著豐富的商業(yè)和學術價值。電商網(wǎng)站的售后評論信息有助于企業(yè)識別用戶偏好和產(chǎn)品缺陷;線上二手房價格的長期監(jiān)測有助于預測區(qū)域房價變動;投資論壇中對股票的討論有助于識別投資者情緒;微博等社交媒體中的用戶發(fā)帖能體現(xiàn)民眾對某熱點事件的看法。本案例將介紹如何利用Python編程,從互聯(lián)網(wǎng)上進行數(shù)據(jù)抓取。15.1案例背景學完本案例,你應該能夠:解釋HTML語言的作用,了解其與編程語言的區(qū)別;描述HTML語言中的標簽、元素、屬性;了解在瀏覽器中查看并定位網(wǎng)頁HTML代碼的方式;使用urllib和Requests庫實現(xiàn)HTML源代碼獲取,BeautifulSoup庫實現(xiàn)目標數(shù)據(jù)定位;了解針對異步加載技術的數(shù)據(jù)抓取方法。15.1背景與問題寫在前面:合理進行數(shù)據(jù)抓取,不得干擾服務器正常運行;關注數(shù)據(jù)抓取的邏輯和技術,而不是記憶個別網(wǎng)站的抓取規(guī)律;遵守相關法律法規(guī),對提供數(shù)據(jù)的網(wǎng)站心存敬意和尊重。15.2.1數(shù)據(jù)抓取的基本思想想一想:數(shù)據(jù)抓取有哪些步驟?假設你用手動的方式,抓取股票價格信息:15.2.1數(shù)據(jù)抓取的基本思想想一想:數(shù)據(jù)抓取有哪些步驟?假設你用手動的方式,抓取股票價格信息:找到包含該信息的網(wǎng)頁(如東方財富網(wǎng));打開網(wǎng)頁找到股價信息的位置;將股價信息復制到數(shù)據(jù)文件中;(如果要抓取多只股票的信息)跳轉(zhuǎn)到下一只股票。15.2.1數(shù)據(jù)抓取的基本思想我們將在程序編寫中一一實現(xiàn)這些功能。困難:程序并不能向人一樣理解某些概念;什么是標題欄?什么是上方?什么是左上角?這需要我們從程序去重新認識網(wǎng)頁,需要了解:網(wǎng)頁的基礎知識;瀏覽器原理。15.2.2 網(wǎng)頁基礎知識和瀏覽器原理網(wǎng)頁是源代碼在瀏覽器下顯示的結果。代碼經(jīng)過IE、Safari等瀏覽器,變成用戶看到的可視化界面。新浪網(wǎng)部分源代碼15.2.2 網(wǎng)頁基礎知識和瀏覽器原理網(wǎng)頁主要由HTML(HyperTextMarkupLanguage)代碼編寫。類比HTML與Python15.2.3 HTML語言簡介HTML是一種標記語言;簡要介紹HTML標簽、元素、屬性等相關概念,通過實例說明HTML語言和網(wǎng)頁中數(shù)據(jù)的聯(lián)系;可以利用W3school等線上資源深入學習。15.2.3 HTML語言簡介標記語言通過標記標簽對文本進行編輯;可以用Sublime等程序來編寫HTML代碼,并將后綴保存為“.html”;使用瀏覽器打開,就會看到可視化界面。HTML示例及運行結果15.2.3 HTML語言簡介h:標題(Headline);h后面的數(shù)字表示層級,數(shù)字越小層級越高、字號越大;p:段落(Paragraph)。<h3></h3>、<p></p>等用來修飾的標記稱為HTML標簽;一般成對出現(xiàn),表示被修飾內(nèi)容的開始和結束;結束標簽帶有“/”符號;從開始到結束標簽的所有內(nèi)容被稱為HTML元素。HTML元素可以嵌套。15.2.3 HTML語言簡介其他值得關注的標簽:超鏈接<a>:a表示錨點(Anchor);結構示例:<ahref="網(wǎng)址">被修飾內(nèi)容</a>我們更關注跳轉(zhuǎn)的網(wǎng)址,即“href=”之后的內(nèi)容;這部分信息成為HTML元素的屬性;屬性包括屬性名和屬性值;這里href是屬性名,等號右側(cè)的網(wǎng)址是屬性值。15.2.3 HTML語言簡介其他值得關注的標簽:列表相關標簽<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語言簡介我們從列表信息頁開始。找到源代碼:在瀏覽器中某頁面的空白處單擊鼠標右鍵,選擇“查看網(wǎng)頁源代碼”;或使用“開發(fā)者工具”功能;可以在具體的數(shù)據(jù)上,使用瀏覽器的“檢查”或“審查元素”功能,快速定位目標數(shù)據(jù)。15.2.3 HTML語言簡介從圖中可以看到哪些所需的數(shù)據(jù)?這些數(shù)據(jù)所在的HTML元素有哪些特征?鏈家源代碼示例15.2.3 HTML語言簡介從鏈家案例中可以看出,不同的房源背后的代碼結構基本相似。相似界面背后存在相似的源代碼,是實現(xiàn)自動數(shù)據(jù)抓取的基礎。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類,是本次請求的響應;狀態(tài)碼是200,即請求成功。常見狀態(tài)碼釋義:200
–
OK;400
-BadRequest;403-Forbidden;404-NotFound
。15.3.1 獲得網(wǎng)頁HTML源代碼使用HTTPResponse.read()方法讀取響應內(nèi)容。由于返回的是bytes形式的源代碼,需要使用decode()函數(shù)進行解碼,使得中文正常顯示。
解碼前解碼后15.3.1 獲得網(wǎng)頁HTML源代碼請同學們自主嘗試獲取其他網(wǎ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)頁編碼格式。可以使用response.encoding='utf-8'
來手動定義。15.3.2 通過HTML標簽定位數(shù)據(jù)獲取源代碼后,使用BeautifulSoup定位目標數(shù)據(jù)。需要用pip預安裝BeautifulSoup4和lxml解析器。15.3.2 通過HTML標簽定位數(shù)據(jù)實例演示:使用BeautifulSoup4從北京鏈家二手房網(wǎng)頁中提取數(shù)據(jù)。獲取源代碼并轉(zhuǎn)為BeautifulSoup對象。15.3.2 通過HTML標簽定位數(shù)據(jù)實例演示:使用BeautifulSoup4從北京鏈家二手房網(wǎng)頁中提取數(shù)據(jù)。獲取源代碼并轉(zhuǎn)為BeautifulSoup對象。使用find()或find_all()提取特定的HTML元素。find()方法用來查找符合條件的第一個元素;find_all()方法用來查找符合條件的所有元素,以列表形式返回。可以看出該網(wǎng)頁共有547個<a>元素。15.3.2 通過HTML標簽定位數(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個結果,對應本頁的30套房源。15.3.2 通過HTML標簽定位數(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(wǎng)址是href屬性的值。要確保找到的規(guī)律是提取目標數(shù)據(jù)的“充要條件”。15.3.2 通過HTML標簽定位數(shù)據(jù)請同學們自己嘗試提取房源的下列信息:房源名稱;房源詳情頁網(wǎng)址;房源總價;房源單價;位置信息;房源信息;房源標簽;……如果遇到困難,請思考:提取數(shù)據(jù)的條件對不對?結果數(shù)量和預期一致嗎?是否混入了不符合要求的元素?string無法處理件套元素的內(nèi)容,可以嘗試結合contents和get_text()方法。15.3.2 通過HTML標簽定位數(shù)據(jù)參考代碼如下:圖中顯示了如何提取第一套房源的信息,如何使用for循環(huán),遍歷提取30套房源的信息?15.3.3 處理“翻頁”數(shù)據(jù)網(wǎng)址變化是最常見的翻頁方式:點擊鏈家二手房的第2-10頁,觀察網(wǎng)址變化。異步加載網(wǎng)址不改變的翻頁方式;如微博、QQ空間等;使用開發(fā)者工具中的網(wǎng)絡監(jiān)控功能,找到后臺實際訪問的網(wǎng)址。15.3.3 處理“翻頁”數(shù)據(jù)異步加載示例:打開Chrome瀏覽器的網(wǎng)絡監(jiān)控工具。打開微博首頁,翻動界面,觀察不斷加載的新網(wǎng)址。需要耐心尋找其中有規(guī)律的內(nèi)容;得到的網(wǎng)址不是一成不變的;如果網(wǎng)站改版升級,需要重新尋找。15.4數(shù)據(jù)抓取技巧合理進行數(shù)據(jù)抓取,不得干擾服務器正常運行。務必加入暫停機制;time.sleep()。更改請求頭:編碼、cookie、用戶代理使用請求頭
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 委托托管協(xié)議書
- 2025版新能源產(chǎn)品銷售合同標準模板
- 2025年度熱鍍鋅鋼管銷售合同范本2篇
- 二零二五年度企業(yè)財務報表編制與分析合同范本3篇
- 2025年度體育場館教練個人聘用合同示例4篇
- 2025年度二手房全款買賣合同房產(chǎn)交易風險提示協(xié)議
- 2025年度城市綜合體商業(yè)空間租賃及品牌入駐協(xié)議
- 跨領域的安全逃生技巧探索
- 綠色能源在農(nóng)業(yè)機械中的運用前景
- 智能家居時代下的家用醫(yī)療設備選擇
- 2025年度車輛抵押借款合同模板(專業(yè)二手車交易平臺)
- 2025年人民教育出版社有限公司招聘筆試參考題庫含答案解析
- 非ST段抬高型急性冠脈綜合征診斷和治療指南(2024)解讀
- 2024年安全員-C證考試題庫及答案(1000題)
- 當代中外公司治理典型案例剖析(中科院研究生課件)
- GMP-基礎知識培訓
- 動力管道設計手冊-第2版
- 2022年重慶市中考物理試卷A卷(附答案)
- Python繪圖庫Turtle詳解(含豐富示例)
- 煤礦機電設備檢修技術規(guī)范完整版
- 榆林200MWp并網(wǎng)光伏發(fā)電項目可行性研究報告
評論
0/150
提交評論