版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數(shù)據(jù)采集和大數(shù)據(jù)“新工科建設之路·數(shù)據(jù)科學與大數(shù)據(jù)系列大數(shù)據(jù)平臺技術實剛教程第二章01數(shù)據(jù)采集和ETL在數(shù)據(jù)庫建設過程中有ETL的操作。ETL即在數(shù)據(jù)抽取過程中進行數(shù)據(jù)的加工轉換,然后加載到存儲器中,常用工具有Kafka、Flume、Kettle等。研究大數(shù)據(jù)、分析大數(shù)據(jù)的首要前提是擁有大數(shù)據(jù)。而擁有大數(shù)據(jù)的方式,要么是自己采集和匯聚數(shù)據(jù),要么是獲取別人采集、匯聚、整理之后的數(shù)據(jù)。銀行、電商、搜索引擎等公司具備從事大數(shù)據(jù)分析的資源和條件,因為它們通過業(yè)務系統(tǒng)積累了大量的業(yè)務數(shù)據(jù)和用戶行為數(shù)據(jù),而普通的IT公司并不具備這樣的天然條件?,F(xiàn)在,為了實現(xiàn)精準營銷,很多公司已經(jīng)開始從電商和搜索引擎公司購買客戶數(shù)據(jù)、行為數(shù)據(jù),以期通過算法精準地發(fā)現(xiàn)新客戶。很多系統(tǒng)在使用過程中會留下“蛛絲馬跡”,數(shù)據(jù)抓取就成為一種很好的獲取數(shù)據(jù)輔助手段。02網(wǎng)絡爬蟲通用網(wǎng)絡爬蟲與聚焦網(wǎng)絡爬蟲通用搜索引擎的局限性01020304不同領域、不同背景的用戶往往具有不同的檢索目的和需求,搜索引擎返回的結果不具有個性化意義,包含大量當前用戶不關心的網(wǎng)頁?;ヂ?lián)網(wǎng)數(shù)據(jù)形式的不斷豐富和網(wǎng)絡技術的不斷發(fā)展,圖像、數(shù)據(jù)庫、音頻、視頻、多媒體等不同類型數(shù)據(jù)大量出現(xiàn),通用搜索引擎往往對這些信息含量密集且具有一定結構的數(shù)據(jù)無能為力,不能很好地發(fā)現(xiàn)和獲取它們。通用搜索引擎大多提供基于關鍵字的檢索,難以支持根據(jù)語義信息實現(xiàn)的查詢。通用搜索引擎的目標是實現(xiàn)盡可能大的網(wǎng)絡覆蓋率,有限的搜索引擎服務器資源與無限的網(wǎng)絡數(shù)據(jù)資源之間的矛盾將進一步加深。網(wǎng)絡爬蟲的工作過程傳統(tǒng)網(wǎng)絡爬蟲從一個或若干初始網(wǎng)頁的統(tǒng)一資源定位符(UniformResourceLocator,URL)處獲得初始網(wǎng)頁的URL。在抓取網(wǎng)頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直至滿足系統(tǒng)的一定停止條件。聚焦網(wǎng)絡爬蟲的工作流程較為復雜,先根據(jù)一定的網(wǎng)頁分析算法過濾與主題無關的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊列,再根據(jù)一定的搜索策略從隊列中選擇下一步要抓取的網(wǎng)頁URL,并重復上述過程,直到達到系統(tǒng)的某一條件時停止。另外,所有被網(wǎng)絡爬蟲抓取的網(wǎng)頁將會被系統(tǒng)存儲,進行一定的分析、過濾,并建立索引,以便之后的查詢和檢索。對聚焦網(wǎng)絡爬蟲來說,這一過程所得到的分析結果還可能給以后的抓取過程提供反饋和指導。網(wǎng)絡爬蟲需要解決的問題:(1)對抓取目標的描述或定義;(3)對URL的搜索策略。(2)對網(wǎng)頁或數(shù)據(jù)的分析與過濾;03Python常用開發(fā)工具簡介010203進入Python官網(wǎng),下載對應版本的安裝包。安裝程序下載完成后,直接雙擊它運行安裝。安裝程序將在操作系統(tǒng)中安裝與Python開發(fā)相關的程序,最核心的是命令行環(huán)境和集成開發(fā)環(huán)境(Python飛IntegratedDevelopmentEnvironment,IDLE)o驗證是否安裝成功:按Win+R組合鍵進入“運行”對話框,輸入cmd并按回車鍵,進入Windows的命令行界面,在命令行輸入python37可以進入Python3.7.3的命令行模式,測試成功說明Python3.7.3安裝成功。Python開發(fā)環(huán)境搭建Python適用于Windows、UNIX、Linux和macOS等操作系統(tǒng)。Linux和macOS一般都自帶Python解釋器,其他操作系統(tǒng)用戶需要根據(jù)自己操作系統(tǒng)的型號、版本,至UPython官網(wǎng)選擇并下載合適的安裝包。本書采用的是Python3.7,Windowsx86-64版本。開發(fā)環(huán)境搭建的主要步驟如下。PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高效率的工具,如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制等。此外,還提供了一些高級功能,用于支持Django框架下的專業(yè)Web開發(fā)。PyCharm是由JetBrains打造的,VS2010的重構插件ReSharper就出自JetBrains之手。同時支持GoogleAppEngine和LronPython。在這些功能的支持下,PyCharm成為Python專業(yè)開發(fā)人員和剛入門學習人員廣泛使用的工具。PyCharm開發(fā)工具PyCharmJupyterNotebook是一種Web應用,能讓用戶將說明文本、數(shù)學方程、代碼和可視化內容全部組合到一個易于共享的文檔中,方便研究和教學。在原始的PythonShell與IPython中,可視化在單獨的窗口中進行,而文字資料及各種函數(shù)和類腳本包含在獨立的文檔中。JupyterNotebook能將這一切集中到一處,方便用戶使用。Jupyter這個名字源自它要服務的三種語言的縮寫:Julia、Python和R。JupyterNotebook特別適合做數(shù)據(jù)處理,其用途包括數(shù)據(jù)清理和探索、可視化、機器學習和大數(shù)據(jù)分析,安裝步驟詳見在線配置文檔。開發(fā)工具JupyterNotebook04Python語言簡介01020304使用數(shù)據(jù)流圖進行數(shù)值計算的開源軟件庫。這種靈活的體系結構使用戶可以將計算部署到桌面、服務器或移動設備中的一個或多個CPU心PU上。TensorFlow基于NumPy、SciPy和Matplotlib的機器學習Python模塊。它為數(shù)據(jù)挖掘和數(shù)據(jù)分析提供了簡單而有效的接口。scikit-learnPython包,具有強大的GPU加速度的計算和自動編程系統(tǒng)構建的深度神經(jīng)網(wǎng)絡。PyTorchPython包,提供快速、靈活和富有表現(xiàn)力的數(shù)據(jù)結構,旨在讓“關系”或“標記”數(shù)據(jù)的使用既簡單又直觀。它是真實數(shù)據(jù)分析的基礎。pandas05060708Python2D繪圖庫,可以生成各種達到印刷品質的硬拷貝格式和跨平臺交互式環(huán)境數(shù)據(jù)。用于Python腳本、Web應用程序服務器和各種圖形用戶界面工具包。Matplotlib是數(shù)學、科學和工程方向的開源軟件,包含統(tǒng)計、優(yōu)化、集成、線性代數(shù)、傅立葉變換、信號和圖像處理等模塊。SciPy快速的高級Web爬行和Web抓取框架,用于抓取網(wǎng)站并從其頁面中提取結構化數(shù)據(jù),還可用于從數(shù)據(jù)挖掘到監(jiān)控和自動化測試的各種用途。Scrapy使用Python進行科學計算所需的基礎包。它提供了強大的連維數(shù)組對象,集成C/C++和FORTRAN代碼的工具及有用的線性代數(shù)、傅里葉變換和隨機數(shù)功能。NumPyPython常見的數(shù)據(jù)類型01Number類型Python3支持int、float、bookcomplex(復數(shù))。在Python3里,只有一種整數(shù)類型int,表示長整型,取代了Python2中的Long。像大多數(shù)語言一樣,數(shù)值類型的賦值和計算都是很直觀的。內置的type。函數(shù)可用來查詢變量所指的對象類型。實例2-1分別給變量a、b、c、d賦予不同的數(shù)據(jù)類型,并通過type()函數(shù)獲取當前對象的類型,代碼如下:Python常見的數(shù)據(jù)類型02String類型Python中的字符串用單引號()或雙引號(")括起來,同時使用反斜()轉特殊字符。字符串的截取的語法格式為:變量[頭下標:尾下標]。索引值以0為開始值,-1為末尾的開始位置。加號(+)是字符串連接運算符,星號(*)表示重復操作。實例2-2實例2-3Python使用反斜杠(\)轉義特殊字符,如果不想讓反斜杠發(fā)生轉義,可以在字符串前添加一個r,表示原始字符串,代碼如下:Python常見的數(shù)據(jù)類型03List類型List(列表)是Python中使用最頻繁的數(shù)據(jù)類型。列表可以實現(xiàn)大多數(shù)集合類的數(shù)據(jù)結構。列表中元素的類型可以不相同,它支持數(shù)字、字符串甚至可以包含列表(嵌套)。列表是寫在方括號(口)之間、用逗號分隔開的元素列表。實例2-4Python常見的數(shù)據(jù)類型04Tuple類型Tuple(元組)是一種數(shù)據(jù)類型,類似List(列表元組用0標識,內部元素用逗號分隔開。但是元組不能二次賦值,相當于只讀列表。實例2-5Python常見的數(shù)據(jù)類型05Set類型Set(集合)是由一個或數(shù)個形態(tài)各異的大小整體組成的,構成集合的事物或對象稱為元素或成員?;竟δ苁菧y試成員關系和刪除重復元素。實例2-6Python常見的數(shù)據(jù)類型06Dictionary類型Dictionary(字典)是Python中一種非常有用的內置數(shù)據(jù)類型。列表是有序的對象集合,字典是無序的對象集合。兩者的區(qū)別在于,字典中的元素是通過鍵來存取的,而不是通過偏移存取的。字典是一種映射類型,字典用{}標識,它是一個無序的〈鍵(key):值(value)》的集合。鍵(key)必須使用不可變類型。在同一個字典中,鍵(key)必須是唯一的。實例2-7010203根據(jù)object創(chuàng)建數(shù)組(一般使用相同元素的列表創(chuàng)建數(shù)組),可定義元素數(shù)據(jù)類型為dtype。注意,數(shù)組中存儲的數(shù)據(jù)元素類型必須是統(tǒng)一的。np.array(object,dtype^None)根據(jù)shape創(chuàng)建值全為1的數(shù)組,創(chuàng)建多維數(shù)組可以將shape用元組定義。np.ones(shape,dtype=None)根據(jù)shape創(chuàng)建值全為0的數(shù)組,創(chuàng)建多維數(shù)組可以將shape用元組定義。np.zeros(shape,dtype=None)NumPy庫01創(chuàng)建數(shù)組實例2-80405np.linspace(start,stop,mxm=50)以相同的步長對區(qū)間[start,stop)劃分出50個端點的一維數(shù)組。np.arange()與Python自帶的range。方法功能類似。NumPy庫01創(chuàng)建數(shù)組實例2-9NumPy庫02常用屬性010203shape返回數(shù)組形狀。ndim返回數(shù)組維度。size返回數(shù)組元素的個數(shù)。03dtype返回數(shù)組元素的類型。實例2-10NumPy庫03NumPy的索引和切片與列表數(shù)據(jù)類型的使用類似。04數(shù)組的廣播機制廣播機制描述了NumPy在算術運算期間處理具有不同形狀的數(shù)組的過程。受某些約束的影響,較小的數(shù)組在較大的數(shù)組上“廣播”,以便它們具有兼容的形狀。廣播提供了一種矢量化數(shù)組操作的方法,以便在C而不是Python中循環(huán)。它可以在不制作冗余數(shù)據(jù)副本的情況下實現(xiàn)這一點,通常產(chǎn)生高效的算法實現(xiàn)。上面使用到的數(shù)組arrl的形狀為(2,3),將其與形狀為(3,)的數(shù)組arr2相加,便會觸發(fā)廣播機制,將arr2的數(shù)組復制成兩行與arrl的形狀匹配后再相加。兩個不同數(shù)組發(fā)生計算,若維度不同則在維度位置補1,成為相同維度的數(shù)組。同一維度數(shù)組進行計算觸發(fā)廣播機制的條件為,兩個數(shù)組其中一個在該維度上的形狀為1。NumPy庫05np.random模塊(1)np.random.seed(),用于指定隨機數(shù)生成的種子,輸入種子的數(shù)據(jù)類型為int64,若不設置則系統(tǒng)根據(jù)時間戳選擇。(2)np.random.rand(),用于產(chǎn)生0與1之間的隨機數(shù)。(3)np.random.randn(),用于產(chǎn)生標準正態(tài)分布的隨機數(shù)。(4)np.random.randintO)用于產(chǎn)生指定范圍內的隨機整數(shù)。(5)np.random.shuffle(ndarray),用于直接將數(shù)組打亂。?NumPy庫05np.random模塊實例2-1105基于Python的網(wǎng)絡爬蟲應用實例urllib.request模塊提供了基本的構造HTTP請求的方法,利用它可以模擬瀏覽器的一個請求發(fā)起過程,同時它還帶有authenticaton(授權驗證)、redirections(重定向)、cookies(瀏覽器Cookies)及其他內容。Urllib庫介紹01urlopen()Urllib庫介紹01urlopen()Urllib庫介紹(1)data參數(shù)data參數(shù)是可選的,如果添加data,它須是字節(jié)流編碼格式的內容,即bytes類型,通過bytes()方法可以轉化。另外,如果傳遞了這個data參數(shù),它的請求方式就不再是GET,而是POST。下面用一個實例說明。01urlopen()Urllib庫介紹(2)timeout參數(shù)timeout參數(shù)可以設置超時時間,單位為秒(s)o如果請求超出了設置的這個時間還沒有得到響應,就會拋出異常;如果不指定,就會使用全局默認時間。它支持HTTP、HTTPS、FTP請求。因此,可以設置超時時間來控制一個網(wǎng)頁。如果長時間未響應,就跳過它的抓取,利用try…except語句就可以實現(xiàn)這樣的操作,實例如下。01urlopen()Urllib庫介紹(3)其他參數(shù)context參數(shù)必須是ssLSSLContext類型,用來指定SSL設置。cafile和capath兩個參數(shù)用于指定CA證書和它的路徑,這個在請求HTTPS鏈接時較為有用。cadefault參數(shù)現(xiàn)在已經(jīng)棄用了,默認為False。01urlopen()Urllib庫介紹02Request利用urlopen()方法可以實現(xiàn)基本請求的發(fā)起,但這幾個簡單的參數(shù)并不足以構建一個完整的請求。如果請求中需加入Headers等信息,就要利用更強大的Request類型來構建一個請求。Urllib庫介紹02Request010203data參數(shù),如果要傳則必須傳bytes(字節(jié)流)類型的;如果是一個字典,可以先用urHib.parse模塊中的urlencode()編碼。headers參數(shù)是一個字典,這個就是RequestHeaders,可以在構造時通過headers參數(shù)直接構造,也可以通過調用Request實例的add_header()方法來添加,RequestHeaders的常見用法就是通過修改User-Agent來偽裝瀏覽器,默認的User-Agent是Python-urllib,可以修改這個參數(shù)值來偽裝瀏覽器。url
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《噪聲污染防治法》課件
- 網(wǎng)店美工模擬題+答案
- 吉林省長春市公主嶺市2023-2024學年七年級上學期期末模擬考試數(shù)學試卷(含答案)
- 養(yǎng)老院老人心理咨詢師福利待遇制度
- 養(yǎng)老院老人精神文化生活指導制度
- 《關于液氨的講課》課件
- 2024年環(huán)境檢測外包服務合同
- 房屋無償協(xié)議書(2篇)
- 《增值的戰(zhàn)略評估》課件
- 2025年上饒貨運從業(yè)資格證模擬考
- 《招商銀行轉型》課件
- 靈新煤礦職業(yè)病危害告知制度范文(2篇)
- 2024年安徽省廣播電視行業(yè)職業(yè)技能大賽(有線廣播電視機線員)考試題庫(含答案)
- 山東省濟南市濟陽區(qū)三校聯(lián)考2024-2025學年八年級上學期12月月考語文試題
- 手術室的人文關懷
- 2024合作房地產(chǎn)開發(fā)協(xié)議
- 農貿市場通風與空調設計方案
- 第25課《周亞夫軍細柳》復習課教學設計+2024-2025學年統(tǒng)編版語文八年級上冊
- 2024年廣東省深圳市中考英語試題含解析
- 金蛇納瑞2025年公司年會通知模板
- 有限空間應急預案演練方案及過程
評論
0/150
提交評論