大數(shù)據(jù)平臺(tái)技術(shù)實(shí)例教程 課件 【ch02】數(shù)據(jù)采集和大數(shù)據(jù)_第1頁
大數(shù)據(jù)平臺(tái)技術(shù)實(shí)例教程 課件 【ch02】數(shù)據(jù)采集和大數(shù)據(jù)_第2頁
大數(shù)據(jù)平臺(tái)技術(shù)實(shí)例教程 課件 【ch02】數(shù)據(jù)采集和大數(shù)據(jù)_第3頁
大數(shù)據(jù)平臺(tái)技術(shù)實(shí)例教程 課件 【ch02】數(shù)據(jù)采集和大數(shù)據(jù)_第4頁
大數(shù)據(jù)平臺(tái)技術(shù)實(shí)例教程 課件 【ch02】數(shù)據(jù)采集和大數(shù)據(jù)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論