版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《大數據采集、預處理與可視化》XXX大學XXX學院主講人:XXX電話:XXX郵箱:XXX@XXX辦公地點:XXX第3章大數據采集學習目標了解大數據采集的相關概念、數據來源熟悉數據采集方法及采集平臺熟練掌握網絡爬蟲技術熟練掌握數據抽取技術能夠綜合應用數據采集方法,獲取多種類型的數據
第3章
大數據采集3.1大數據采集概述3.2網絡爬蟲技術3.3數據抽取技術3.4案例:網絡租房信息采集《大數據采集、預處理與可視化》3.1.1大數據采集的概念大數據采集數據采集,又稱為數據獲取,是數據分析過程中相當重要的一個環(huán)節(jié),通過各種技術手段把外部各種數據源產生的數據實時或非實時地采集并加以利用。大數據采集是大數據產業(yè)的基石,是大數據分析和應用的前提和必要條件。從數據類型來看,采集的數據可分為:結構化數據、非結構化數據和半結構化數據。3.1.1大數據采集的概念1.結構化數據結構化數據是指可以使用關系數據庫表示和存儲,可以用二維表來邏輯表達實現的數據。數據以行為單位,一行數據表示一個實體的信息,每一行數據的屬性是相同的。結構化數據的存儲和排列是很有規(guī)律的,這對數據查詢和修改等操作很有幫助。由于結構化數據的數據結構通常固定不變,因此它的擴展性不好。典型的結構化數據包括信用卡號碼、日期、電話號碼等。3.1.1大數據采集的概念2.非結構化數據非結構化數據是數據結構不規(guī)則或不完整,沒有預定義數據模型的數據。包括任意格式的傳感器數據、辦公文檔、文本、圖片、圖像、音頻和視頻信息等。3.半結構化數據半結構化數據是介于結構化和非結構化之間的數據。它是結構化的數據,但是結構變化很大,結構與數據相交融,也被稱為具有自描述結構的數據。在半結構化數據中,同一類實體可以有不同的屬性,即使它們被組合在一起,這些屬性的順序也并不重要。常見的半結構數據有XML、HTML和JSON等。3.1.1大數據采集的概念大數據采集是指從傳感器、智能設備、企業(yè)在線系統、企業(yè)離線系統、社交網絡和互聯網平臺等獲取數據的過程。大數據采集與傳統的數據采集不同主要挑戰(zhàn):并發(fā)數高,可能同時會有成千上萬的用戶在進行訪問和操作。采集方法不同,大數據采集時大多使用了大數據的處理模式,即MapReduce分布式并行處理模式或是基于內存的流式處理模式。3.1.2大數據采集的數據源傳統商業(yè)數據傳統商業(yè)數據主要來源于企業(yè)ERP系統、銷售終端及網上支付系統等業(yè)務系統的數據。傳統商業(yè)主要的大數據來源。日志數據日志數據一般由數據源系統產生,用于記錄數據源執(zhí)行的各種操作活動。網絡監(jiān)控中的流量管理金融應用中的股票記賬Web服務器記錄的用戶訪問行為...3.1.2大數據采集的數據源社交網絡數據社交網絡數據是指網絡空間交互過程中產生的數據,具有大量化、多樣化、快速化等特點,因此這些數據大都復雜且難以被利用。采集范圍:及微博、論壇、博客、新聞網、電商網站等各種網站資源采集類型:文本、數據、URL、圖片、視頻、音頻等多種結構化、半結構化和非結構化數據物聯網數據物聯網數據是指除了人和服務器之外,在射頻識別、物品、設備、傳感器等節(jié)點產生的大量數據,包括射頻識別裝置、音頻采集器、視頻采集器、傳感器、全球定位設備、辦公設備、家用設備和生產設備等產生的數據。3.1.3大數據采集的方法系統日志采集日志文件:數據源系統自動生成的記錄文件,并以指定的文件格式記錄事件活動。日志文件應用于幾乎所有的計算機系統中。對于系統日志文件采集,可以使用海量數據采集工具,如Cloudera的Flume、Fluented、Logstash,Facebook的Scribe以及Hadoop的Chukwa等大數據采集框架。這些工具均采用分布式架構,能滿足大數據的日志數據采集和傳輸需求。3.1.3大數據采集的方法網絡爬蟲網絡爬蟲是一種通過某種策略從網絡中自動獲取有用信息的程序,廣泛應用于互聯網搜索引擎或其他類似網站。它們可自動采集能夠訪問到的所有頁面內容,以供搜索引擎做進一步處理(分揀、整理、索引下載到的頁面),使得用戶能更快地檢索到需要的內容。爬蟲的目地在于將目標網頁數據下載至本地,以便進行后續(xù)的數據分析。3.1.3大數據采集的方法網絡爬蟲網絡爬蟲通常由種子URL隊列、待爬取URL隊列、已爬取URL隊列、網頁下載等構成。首先,指定入口URL,并將其加入種子URL隊列中;接著,將種子URL加入待爬取URL隊列,并從待爬取URL隊列依次讀取URL,從互聯網中下載URL所鏈接的網頁;然后,將網頁的URL保存到已爬取URL隊列中,將網頁信息保存到下載網頁庫中,從網頁中抽取出需要爬取的新URL并加入待爬取URL隊列中。重復這一過程,直到待爬取URL隊列為空。3.1.3大數據采集的方法ETLETL即數據的抽取(Extract)、轉換(Transform)、加載(Load),是將企業(yè)內部的各種形式和來源的數據經過抽取、清洗、轉換之后進行格式化的過程。ETL的目的是整合企業(yè)中分散、零亂、標準不統一的數據,以便于后續(xù)的分析、處理和運用。3.1.3大數據采集的方法ETL數據抽取階段的主要目的是匯總多種數據源并為下一步數據轉換做準備。在進行數據抽取之前需要充分了解各種數據源。理解并利用它們的特性,結合實際業(yè)務需求,選擇合適的抽取方式。數據轉換階段是ETL的核心環(huán)節(jié),也是最復雜的環(huán)節(jié)。它的主要目的是將抽取到的各種數據,進行數據的清洗、格式的轉換、缺失值填補、剔除重復值等操作,最終得到格式統一、高度結構化、數據質量高、兼容性好的數據,為后續(xù)的分析決策提供可靠的數據支持。數據加載階段的主要目的是把數據加載至目的地,如數據倉庫中。通常是將處理好的數據寫成特定格式的文件,然后再把文件加載到指定的分區(qū)表中。3.1.4大數據采集平臺FlumeFlume作為Hadoop的組件,是Apache旗下的一款開源、高可靠、高擴展、易管理、支持客戶擴展的數據采集系統,可以有效地收集、聚合和遷移大量日志數據。Flume支持在日志系統中定制各類數據發(fā)送方,用于收集數據。同時,Flume提供對數據進行簡單處理,并寫入到各種數據接受方的功能。3.1.4大數據采集平臺FlumeFlume采用了分層架構,由Agent、Collector和Storage組成。其中,Agent作為Flume最小的獨立運行單位,將數據以事件的形式從源頭送至目的地,也是Flume的核心結構。Collector負責將多個Agent的數據進行匯總,Storage作為存儲系統將收集到的數據持久化。每個Agent相當于一個完整的數據收集工具,其內部包含以下三個核心組件:1)Source:采集源,用于對接數據源,以獲取數據。2)Channel:Agent內部的數據傳輸通道,用于從Source傳輸數據到Sink。3)Sink:采集數據的傳送目的地,用于往下一級Agent或者最終存儲系統傳遞數據。3.1.4大數據采集平臺FluentFluentd是一個開源的通用日志采集和分發(fā)系統,可以從多個數據源采集日志,并將日志過濾和加工后分發(fā)到多種存儲和處理系統中。Fluentd使用JSON文件作為數據格式來統一處理日志數據。它采用插件式架構,具有高可擴展性和高可用性,同時還實現了高可靠的信息轉發(fā)。進行數據采集時,可以把各種來源的信息發(fā)送給Fluentd,再由Fluentd根據配置通過不同的插件把信息轉發(fā)到不同的地方,比如文件、SaaS平臺、數據庫,甚至可以轉發(fā)到另一個Fluentd。3.1.4大數據采集平臺LogstashLogstash是一種具有實時流水線功能的開源數據收集引擎,可以動態(tài)地統一收集來自包括日志、網絡請求、關系數據庫、傳感器或物聯網等不同來源的數據,并將數據規(guī)范地輸出到具體的目標,為各種分析和可視化用例清洗所有數據。Logstash的數據處理過程如圖所示,主要包括:Inputs、Filters、Outputs三部分,在Inputs和Outputs中還可以使用Codecs對數據格式進行處理,以實現特定的數據采集、數據處理、數據輸出等功能。3.1.4大數據采集平臺LogstashInputs(輸入階段):采集各種類型、大小的來源數據;Filters(過濾器階段):可以將過濾器和條件語句結合使用對事件進行處理;Outputs(輸出階段):將事件數據發(fā)送到特定的目的地,完成了所有輸出處理,就完成了事件的執(zhí)行;Codecs(解碼器):基于數據流的過濾器,作為輸入和輸出的一部分進行操作,可以輕松地將消息的傳輸與序列化過程分開。Elasticsearch是當前主流的分布式大數據存儲和搜索引擎,可以為用戶提供強大的全文本檢索能力,廣泛應用于日志檢索、全站搜索等領域。3.1.4大數據采集平臺ChukwaChukwa是Apache旗下另一個開源的數據收集平臺,提供了對大數據量的日志類數據進行采集、存儲、分析和展示的全套解決方案和框架。Chukwa可以用于監(jiān)控大規(guī)模Hadoop集群的整體運行情況,并對它們的日志進行分析。3.1.4大數據采集平臺ChukwaChukwa主要部件包括:Agent、Adapter、Collector等。Agent:為Adapter提供各種服務,包括啟動和關閉Adaptor,將采集的數據發(fā)送給Collector,定期記錄Adapter狀態(tài)以便Adapter出現故障后能夠迅速恢復。Adapter:直接采集數據的接口和工具,一個Agent可以對多個Adapter的數據采集進行管理。Collector:負責收集Agent傳送來的數據,并定時寫入集群中。Demux:利用MapReduce對數據進行分類、排序與去重。
第3章
大數據采集3.2網絡爬蟲技術3.1大數據采集概述3.3數據抽取技術3.4案例:網絡租房信息采集《大數據采集、預處理與可視化》3.2.1網絡爬蟲概述網絡爬蟲一般分為數據采集、處理、存儲三個部分。網絡爬蟲一般從一個或者多個初始URL開始下載網頁內容,然后通過搜索或是內容匹配等手段獲取網頁中感興趣的內容。同時不斷從當前頁面提取新的URL,根據網絡爬蟲策略,按一定的順序放入待爬取URL隊列中。以上過程循環(huán)執(zhí)行,直到滿足系統相應的停止條件,然后對這些被抓取的數據進行清洗、整理并建立索引,存入數據庫或文件中。最后,根據查詢需要,從數據庫或文件中提取相應的數據,以文本或圖表的方式顯示出來。3.1.4大數據采集平臺網絡爬蟲的應用(1)爬取網站上的圖片,以便集中進行瀏覽。(2)爬取相關金融信息,并進行投資分析。(3)將多個新聞網站中的新聞信息爬取下來,集中進行閱讀。(4)利用爬蟲將對應網頁上的信息爬取下來,自動過濾掉網頁中的廣告,方便對信息的閱讀與使用。(5)利用爬蟲,可以設置相應的規(guī)則,自動地從互聯網中采集目標用戶公開的信息,方便個性化服務使用。(6)爬取網站的用戶活躍度、發(fā)言數、熱門文章等信息,進行相關分析。3.2.2常用網絡爬蟲方法通用網絡爬蟲通用網絡爬蟲又稱全網爬蟲(ScalableWebCrawler),爬取對象從一些種子URL擴充到整個Web,主要為門戶站點搜索引擎和大型Web服務提供商數據采集服務。網絡爬蟲按照系統結構和實現技術,大致可以分為:通用網絡爬蟲、聚焦網絡爬蟲、增量式網絡爬蟲、深層網爬蟲。在實際的應用中,網絡爬蟲系統通常是由以上幾種爬蟲技術相結合而實現的。3.2.2常用網絡爬蟲方法主題網絡爬蟲主題網絡爬蟲,又稱聚焦網絡爬蟲(FocusedWebCrawler),是指選擇性地爬取那些與預先定義好的主題相關頁面的網絡爬蟲。和通用網絡爬蟲相比,主題網絡爬蟲只需要爬取與主題相關的頁面,極大地節(jié)省了硬件和網絡資源,保存的頁面數量少但更新快,可以較好地滿足一些特定人群對特定領域信息的需求。主題網絡爬蟲在通用網絡爬蟲的基礎上,還需要根據一定的網頁分析算法過濾掉與主題無關的URL,保留有用的URL并將其放入等待爬取的URL隊列。3.2.2常用網絡爬蟲方法增量式網絡爬蟲增量式網絡爬蟲是指對已下載網頁采取增量式更新,即只爬取新產生的或者已經發(fā)生變化的網頁的網絡爬蟲,并不重新下載沒有發(fā)生變化的頁面。增量式網絡爬蟲可以有效減少數據下載量,及時更新已爬取的頁面,減小時間和空間上的消耗,但是增加了爬取算法的復雜度和實現難度。3.2.2常用網絡爬蟲方法深層網爬蟲WWW按其分布狀況可以分為“表層網”(SurfaceWeb)和“深層網”(DeepWeb)。表層網是指傳統網頁搜索引擎可以索引的Web,是以URL可以到達的靜態(tài)網頁為主構成的Web。深層網又稱深網或隱藏網(HiddenWeb),是指互聯網上那些不能被傳統搜索引擎索引的非表層網頁內容。常規(guī)的網絡爬蟲在運行中很難發(fā)現隱藏在普通網頁中的信息和規(guī)律,缺乏一定的主動性和智能性。比如,需要輸入用戶名和密碼的頁面或者包含頁碼導航的頁面均無法爬取。針對常規(guī)網絡爬蟲的不足,深層網爬蟲對其結構加以改進,增加了表單分析和頁面狀態(tài)保持兩種功能。深層網爬蟲通過分析網頁的結構將其分為普通網頁和存在更多信息的深層網頁,針對深層網頁構造合適的表單參數并提交,從而得到更多的頁面信息。3.2.2常用網絡爬蟲方法深層網爬蟲深層網爬蟲體系結構包含爬行控制器、解析器、表單分析器、表單處理器、響應分析器、LVS控制器以及兩個爬蟲內部數據結構(URL列表、LVS表)等。深層網爬蟲在頁面下載完成后并不立即遍歷所有的URL,而是使用一定的算法將URL進行分類,對于不同的類別采取不同的方法計算查詢參數,并將參數再次提交到服務器。如果提交的查詢參數正確,將會得到隱藏的頁面和URL。3.2.2常用網絡爬蟲方法深層網爬蟲例如:需要輸入用戶名和密碼的頁面或者包含頁碼導航的頁面3.2.3網頁數據采集的實現urllib庫urllib庫是Python內置的HTTP請求庫,可以模擬瀏覽器的行為,向指定的服務器發(fā)送HTTP請求,并可以保存服務器返回的數據。Urllib庫包含四大模塊:urllib.request:最基本的HTTP請求模塊,可以用它來模擬發(fā)送HTTP請求。urllib.error:異常處理模塊,包含一些urllib.request產生的錯誤。urllib.parse:URL解析模塊,提供了許多URL處理方法。urllib.robotparser:robots.txt解析模塊。用來解析網站的robots.txt文本文件。它提供了一個單獨的RobotFileParser類,通過該類提供的can_fetch()方法可以測試爬蟲是否能夠爬取該網站的頁面。3.2.3網頁數據采集的實現urllib庫使用urllib.request.urlopen()這一接口函數可以很輕松地打開一個網站,讀取并輸出網頁信息。urllib.request.urlopen()函數的格式:urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)url:表示待爬取的目標URL。data:用于指明發(fā)往服務器的請求中額外的參數信息,默認為None,此時以GET方式發(fā)送請求;當用戶給出data參數時,改為POST方式發(fā)送請求。timeout:設置網站的訪問超時時間。cafile、capath、cadefault:用于實現可信任CA證書的HTTP請求。context:實現SSL加密傳輸。3.2.3網頁數據采集的實現urllib庫【例3-1】使用urllib快速爬取一個網頁并打印網頁內容1234importurllib.requestresponse=urllib.request.urlopen('')html=response.read().decode('UTF-8')print(html)#導入request#調用urllib.request庫的urlopen()方法,并傳入URL#使用read()方法讀取獲取到的網頁內容#輸出網頁內容3.2.3網頁數據采集的實現Requests庫Requests庫是一個Python的第三方庫,可以通過調用它來幫助人們實現自動爬取HTML網頁頁面以及模擬人類訪問服務器自動提交網絡請求。它比urllib更加方便簡潔,可以節(jié)約開發(fā)者大量的工作,完全滿足HTTP測試需求。方法說明requests.requests()構造一個請求,支撐以下各方法的基礎方法requests.get()獲取HTML網頁的主要方法,對應HTTP的GETrequests.head()獲取HTML網頁頭的信息方法,對應HTTP的HEADrequests.post()向HTML網頁提交POST請求方法,對應HTTP的POSTrequest.put()向HTML網頁提交PUT請求的方法,對應HTTP的PUTrequests.patch()向HTML網頁提交局部修改的請求,對應于HTTP的PATCHrequests.delete()向HTML頁面提交刪除請求,對應HTTP的DELETE3.2.3網頁數據采集的實現Requests庫【例】以GET請求方式為例,輸出多種請求12345678importrequestsresponse=requests.get('')print('狀態(tài)碼:',response.status_code)print('url:',response.url)print('header:',response.headers)print('cookie:',response.cookies)print('text:',response.text)print('content:',response.content)#導入模塊#對需要爬取的網頁發(fā)送請求#輸出狀態(tài)碼#輸出請求#輸出頭部信息#輸出cookie信息#以文本形式輸出網頁源碼#以字節(jié)流形式輸出網頁源碼3.2.3網頁數據采集的實現BeautifulSoup庫BeautifulSoup是一個可以從HTML或XML文檔提取數據的Python庫,是Python內置的網頁分析工具,用來快速轉換被爬取的網頁。BeautifulSoup能夠提供一些簡單的方法以及類Python語法來查找、定位、修改一棵轉換后的DOM(DocumentObjectModel,文檔對象模型)樹,自動將輸入文檔轉換為Unicode編碼,輸出文檔轉換為UTF-8編碼。3.2.3網頁數據采集的實現BeautifulSoup庫BeautifulSoup支持的解析器包括Python標準庫、lxml和html5lib。在創(chuàng)建BeautifulSoup對象時,如果沒有明確地指定解析器,BeautifulSoup對象一般會根據當前系統安裝的庫自動選擇解析器。解析器的選擇順序為:lxml、html5lib、Python標準庫。lxml解析器較為強大,速度更快,因此推薦使用lxml解析器。解析器使用方法使用要求Python標準庫BeautifulSoup(markup,’html.parser’)安裝bs4庫lxmlHTML解析器BeautifulSoup(markup,’lxml’)pipinstalllxmllxmlXML解析器BeautifulSoup(markup,’xml’)pipinstalllxmlhtml5libBeautifulSoup(markup,’html5lib’)pipinstallhtml5lib3.2.3網頁數據采集的實現BeautifulSoup庫【例】使用BeautifulSoup爬取網頁數據123456importrequestsfrombs4importBeautifulSoupurl='/get'r=requests.get(url)soup=BeautifulSoup(r.text,'html.parser')print(soup.prettify())
#導入模塊
#創(chuàng)建BeautifulSoup對象#格式化輸出3.2.4常用網絡爬蟲工具目前的網絡爬蟲種類繁多,既包括Googlebot、百度蜘蛛這種分布式多線程的商業(yè)爬蟲工具,也包括像ApacheNutch、CUNWget這類開源爬蟲工具,還包括如八爪魚采集器、火車采集器這類使用簡單方便的爬蟲工具。這些工具可以在很短的時間內,輕松地從各種不同的網站或者網頁中獲取大量的規(guī)范化數據,幫助用戶實現數據的采集、編輯、規(guī)范化等操作,擺脫對人工搜索及數據收集的依賴,從而降低獲取信息的成本,提高工作效率。3.2.4常用網絡爬蟲工具GooglebotGooglebot是谷歌的網頁爬取工具,俗稱Googlebot爬蟲。它使用計算機集群技術,能夠發(fā)現新網頁和更新的網頁,并將這些網頁添加到谷歌索引中。Googlebot利用各種算法來計算需要獲取哪些網站、獲取網站的頻率以及從每個網站上獲取網頁的數量。在進行網頁爬取時,Googlebot會先查看以前爬取過程中所生成的一系列網頁地址,包括網站站長提供的站點地圖數據。3.2.4常用網絡爬蟲工具Googlebot谷歌將Googlebot分布在多臺計算機上,以便提高性能并隨著網絡規(guī)模的擴大而擴大。此外,為了降低帶寬占用,谷歌會在計算機上運行多個爬取工具:Googlebot:爬取網頁中的文字內容,爬取的內容保存于Google網頁搜索和新聞搜索的數據庫中。Googlebot-mobile:爬取網頁中的文字內容,用于手機用戶搜索。Googlebot-Image:爬取網頁的圖片內容,存入Google圖片搜索數據庫。Mediapartners-Google:爬取網頁中的文字內容,用于GoogleAdsense(由谷歌公司推出的針對網站主的一個互聯網廣告服務)關鍵詞分析。只有投放了GoogleAdsense的網頁才會被Mediapartners-Google探測器爬取。Adsbot-Google:爬取網頁中的文字內容,用于為GoogleAdWords提供參考。只有GoogleAdWords的目標網頁才會被Adsbot-Google探測器爬取。3.2.4常用網絡爬蟲工具百度蜘蛛百度蜘蛛(Baiduspider)是百度搜索引擎的一個自動化程序,主要功能是收集整理互聯網上的網頁、圖片、視頻等內容并反饋給用戶。百度蜘蛛是一款功能強大的搜索結果提取器,基于BeautifulSoup4和requests。百度蜘蛛使用深度優(yōu)先策略和權重優(yōu)先策略爬取頁面。(1)深度優(yōu)先策略的目的是為了爬取高質量的網頁。(2)權重優(yōu)先策略是指對反向鏈接較多的頁面的優(yōu)先爬取。3.2.4常用網絡爬蟲工具百度蜘蛛百度蜘蛛的爬蟲算法定義了爬蟲范圍、篩選重復頁面等爬蟲策略。采用不同的算法,爬蟲的目的不同,爬蟲的運行效率也不同,爬取結果也會有所差異。Baiduspider主要用于百度網頁爬蟲和移動爬蟲;Baiduspider-image用于百度圖片爬蟲;Baiduspider-video用于百度視頻爬蟲;Baiduspider-news用于百度新聞爬蟲Baiduspider-favo用于百度搜藏爬蟲;Baiduspider-cpro用于百度聯盟爬蟲;Baiduspider-ads用于百度商務爬蟲。3.2.4常用網絡爬蟲工具ApacheNutchApacheNutch是一個包含Web爬蟲和全文搜索功能的開源搜索引擎。相對于商用的搜索引擎,它的工作流程更加公開透明,擁有很強的可定制性,并且支持分布式爬蟲應用。Nutch爬蟲的大致過程如下。根據WebDatabase生成一個待爬取網頁的URL集合,即預取列表。產生01爬取02根據預取列表進行網頁爬取,如果下載線程有很多個,那么就生成很多個預取列表,爬蟲根據爬取回來的網頁更新WebDB,根據更新后的WebDB生成新的預取列表。更新03循環(huán)上述爬取流程,直到預取列表全部遍歷完畢。3.2.4常用網絡爬蟲工具火車采集器火車采集器擁有內容采集和數據導入等功能,并且可以將采集的任何網頁數據發(fā)送到遠程服務器?;疖嚥杉鞲鶕远x規(guī)則爬取數據?;疖嚥杉鞑杉瘮祿r分為采集數據與發(fā)布數據兩個步驟:(1)采集數據。包括確定采集網址和采集內容。在這個過程中,用戶可以自定義采集規(guī)則來獲取需要的數據。(2)發(fā)布數據。就是將數據發(fā)布到自己的論壇,也是實現數據占為已有的過程。3.2.4常用網絡爬蟲工具火車采集器3.2.4常用網絡爬蟲工具八爪魚采集器八爪魚采集器以完全自主研發(fā)的分布式云計算平臺為核心,是一款免費使用、操作簡單、功能強大、高效采集的網頁數據采集工具,可以非常容易地從任何網頁中準確采集所需要的數據,生成自定義的、規(guī)范的數據格式。3.2.4常用網絡爬蟲工具八爪魚采集器使用示例八爪魚采集器可以從其官網進行下載。下載安裝后,啟動該軟件,主界面如下。下載鏈接:/download/windows3.2.4常用網絡爬蟲工具八爪魚采集器使用示例利用八爪魚采集器采集“大眾點評”商家數據。大眾點評榜單網址:/shoplist/search/15_10_0_score/輸入采集地址3.2.4常用網絡爬蟲工具利用八爪魚采集器采集“大眾點評”商家數據。輸入采集地址創(chuàng)建采集列表此外,八爪魚采集器還提供了智能分析功能,能夠實現對采集數據的統計分析、預測分析。3.2.5案例:電影評論爬取實現效果:主要爬取豆瓣網上《霸王別姬》相關評論的用戶名、推薦指數、投票數以及用戶評論等信息,并把這些信息以csv格式保存到本地計算機上。3.2.5案例:電影評論爬取加載需要引用的相關模塊及包(為便于操作和實時交互,可以在Anaconda3中的JupyterNotebook中完成該實例)12345importrequestsfromlxmlimportetreeimporttimeimportrandomimportcsv#導入requests,用來爬取網頁的HTML源代碼#導入etree,用來解析HTML文檔對象#導入time模塊#導入隨機數庫#導入csv,用于將數據寫入到csv文件中3.2.5案例:電影評論爬取爬取評論之前需要先對頁面進行解析,如圖所示,可以使用開發(fā)者工具查看網頁源碼,并找到所需字段的相應位置。3.2.5案例:電影評論爬取定義一個spider_comment爬蟲函數,負責爬取頁面并進行解析。由于評論頁面是分頁顯示的,該函數需要先對一個頁面的評論進行爬取。1234567defspider_comment(url):headers={'USER-AGENT':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36'}response=requests.get(url,headers=headers)html=response.text
html=etree.HTML(html)
#定義頁面爬取函數#指定請求頭,進行UA偽裝#發(fā)起一個帶請求頭的HTTP請求#獲取response中的數據信息#調用HTML類進行初始化,構造XPath解析對象3.2.5案例:電影評論爬取8910111213
authods=html.xpath('//div[@class="comment-item"]/div[2]/h3/span[2]/a/text()')stars=html.xpath('//div[@class="comment-item"]/div[2]/h3/span[2]/span[2]/@title')agrees=html.xpath('//div[@class="comment-item"]/div[2]/h3/span[1]/span/text()')contents=html.xpath('//div[@class="comment-item"]/div[2]/p/span/text()')data=zip(authods,stars,agrees,contents)returnhtml,data#獲取用戶名#獲取推薦指數#獲取投票數#獲取用戶評論#將數據打包成元組
3.2.5案例:電影評論爬取定義函數,對頁面源代碼進行解析,獲取下一頁鏈接。1234567defparse4link(html,base_url):link=Nonehtml_elem=etree.HTML(html)url=html_elem.xpath('//div[@id="paginator"]/a[@class="next"]/@href')ifurl:link=base_url+url[0]returnlink3.2.5案例:電影評論爬取再定義一個batch_spider_comments()函數來批量爬取手機評論數據,實現對網頁的翻頁。12345678910defbatch_spider_comments():print('開始爬取')base_url='/subject/1291546/comments'link=base_urlwhilelink:print('正在爬取'+str(link)+'……')html,data=spider_comment(link)link=parse4link(html,base_url)save2file(fd,data)
time.sleep(random.random())#批量抓取評論數據#指定請求頭,進行UA偽裝#獲取網址#初始化當前網址#對每個頁面進行遍歷#頁面爬取#獲取下一頁鏈接#數據存儲#模擬用戶瀏覽,設置爬蟲間隔,防止因為爬取太頻繁而導致IP被封3.2.5案例:電影評論爬取通過自定義的函數來存儲爬取的數據。123456comment_file_path='douban_comment.csv'defsave2file(data):fd=open(comment_file_path,'w',encoding='utf-8',newline='')writer=csv.writer(fd)foritemindata:writer.writerow(item)#設置存儲評論數據的文件路徑#定義存儲數據的函數#以寫入的方式打開文件,newline的作用是防止添加數據時插入空行
#寫入數據最后,編寫一個主程序,用于調用batch_spider_comments()函數,實現對電影《霸王別姬》評論的爬取。
第3章
大數據采集3.3數據抽取技術3.2網絡爬蟲技術3.1大數據采集概述3.4案例:網絡租房信息采集《大數據采集、預處理與可視化》3.3.1數據抽取概述數據抽取的含義數據抽取是指從數據源中抽取對用戶有用或感興趣的數據的過程。一般用于從源文件和源數據庫中獲取相關數據,是大數據工作開展的前提。從關系數據庫中抽取數據一般有全量抽取與增量抽取兩種方式。(1)全量抽取。類似于數據遷移或數據復制,它將數據源中的表或視圖數據原封不動地從數據庫中抽取出來,并轉換成ETL工具可以識別的格式。(2)增量抽取。只抽取自上一次抽取以來,數據庫要抽取的表中新增或修改的數據。在ETL使用過程中,相比于全量抽取,增量抽取的應用范圍更廣。如何捕獲變化的數據是增量抽取的關鍵。3.3.1數據抽取概述數據抽取的含義在數據抽取中,尤其是增量數據抽取中,常用的捕獲變化數據的方法包括觸發(fā)器、時間戳、全表對比、日志對比等。(1)觸發(fā)器在抽取表上建立需要的觸發(fā)器,一般需要建立插入、修改和刪除三個觸發(fā)器。每當表中的數據發(fā)生變化時,相應的觸發(fā)器會將變化寫入一個臨時表。抽取線程從臨時表中抽取數據時,臨時表中抽取過的數據將被標記或刪除。(2)時間戳在源表上增加一個時間戳字段,當系統修改表數據時,同時修改時間戳字段的值。當進行數據抽取的時候,通過時間戳來抽取增量數據。3.3.1數據抽取概述數據抽取流程1、理解數據和數據的來源。2、整理、檢查和清洗數據。3、
將清洗好的數據集成,并建立抽取模型。開展數據抽取與數據轉換工作。4、將轉換后的結果進行臨時存放。5、確認數據,并將數據最終應用于數據挖掘中。此外,在實際開發(fā)流程中,常常需要把數據抽取、數據轉換和數據加載看作一個整體進行流程設計。3.3.2Kettle介紹與安裝Kettle軟件簡介Kettle是一款開源的ETL工具,在數據倉庫中可以使用Kettle來抽取網頁或數據庫中存儲的數據。Kettle具有開源免費、可維護性好、便于調試、開發(fā)簡單等優(yōu)點。Kettle的功能部構成如下(1)SPOON:用戶通過圖形界面來設計ETL轉換過程。(2)PAN:PAN是一個后臺執(zhí)行的程序,以命令行方式執(zhí)行轉換,沒有圖形界面。PAN允許用戶使用時間調度器,批量運行由SPOON設計的ETL轉換。(3)CHEF:允許用戶創(chuàng)建Job任務。Job任務通過設置的轉換、任務和腳本等,進行自動化更新數據倉庫等復雜操作。(4)KITCHEN:允許用戶批量使用由CHEF設計的任務3.3.2Kettle介紹與安裝Kettle的安裝Kettle是一款Java語言編寫的開源ETL工具,需要在Java運行環(huán)境下才能正常使用。由于Kettle本身不具有數據存儲系統,所以需配合MySQL才能更好地存儲相關資源與數據。因為Kettle工具是綠色軟件,無需安裝,所以在官網下載完壓縮包后,使用解壓軟件將Kettle工具解壓到計算機文件夾中即可。3.3.3文本數據抽取文本文件在Windows中一般是指記事本文件,本節(jié)主要討論使用Kettle將文本文件中的數據抽取到Excel文檔中。
新建“轉換”任務
創(chuàng)建文本文件輸入3.3.3文本數據抽取新建本地txt文件——>添加文本文本文件——>獲取對應字段——>新建節(jié)點連接3.3.3網頁數據抽取使用Kettle將網頁中的XML數據抽取并在Kettle中顯示。拖拽相關模塊到工作區(qū)域,并建立鏈接。3.3.4網頁數據抽取設置“生成記錄”選項,生成記錄數據。設置“HTTPclient各項配置。3.3.4網頁數據抽取設置GetdataformXML,用于讀取網頁數據中的節(jié)點內容。設置字段選擇。3.3.4網頁數據抽取保存文件并執(zhí)行程序,最后在“執(zhí)行結果”欄中的“步驟度量”中查看執(zhí)行狀況。
第3章
大數據采集3.1案例:網絡租房信息采集3.2網絡爬蟲技術3.3數據抽取技術3.1大數據采集概述《大數據采集、預處理與可視化》3.4案例:網絡租房信息采集本案例通過Python編寫的網絡爬蟲程序獲取租房相關信息并保存至本地,主要流程分為爬取網頁、解析數據、保存數據三個步驟。(1)通過獲取目標網站URL地址返回HTML文本內容;(2)根據匹配規(guī)則篩選需要的數據;(3)將數據存入TXT文本文件。3.4.1網絡爬蟲采集數據打開鏈家官網,定位到朝陽區(qū)租房頁面,按F12鍵打開開發(fā)者模式,在“元素(Elements)”選項卡中查看網頁源代碼即可找到需要的房屋信息數據3.4.1網絡爬蟲采集數據根據查找到的房屋信息對應的源代碼進行數據解析,為從網頁中爬取信息做準備。1234567findLink=pile(r'<aclass="twoline"href="(.*?)"target="_blank">',re.S)findStreet=pile(r'</a>-<ahref=".*target="_blank">(.*?)</a>-',re.S)findArea=pile(r'title="(.*?)">',re.S)findSize=pile(r'<i>/</i>(.*?)<i>/</i>',re.S)findPrice=pile(r'<em>(.*?)</em>',re.S)findOrientation=pile(r'<i>/</i>(.*?)<i>/</i>',re.S)findLayout=pile(r'<i>/</i>.*<i>/</i>(.*?)<span',re.S)#通過正則匹配解析數據,此處為租房鏈接#街道信息#小區(qū)#面積#價格#朝向#戶型3.4.1網絡爬蟲采集數據從網頁中獲取有價值的信息,并保存為數組。首先,為了爬取更多的租房信息,通過構造請求鏈接,實現翻頁功能;然后,使用構造的鏈接依次爬取頁面內容,該功能在askURL()中實現,再通過BeautifulSoup()對頁面內容進行解析;接著,使用上述內容中構造的re正則表達式,通過re.findall()查找指定的字符串;最后,將爬取到的信息存入數組。12345678defgetData(baseurl):print("爬取中...")datalist=[]foriinrange(1,5):#設置翻頁數
time.sleep(3)url=baseurl+str(i)html=askURL(url)soup=BeautifulSoup(html,"html.parser")#獲取頁面內容#解析當前頁面數據3.4.1網絡爬蟲采集數據910111213141516171819foriteminsoup.find_all('div',class_="content__list--item--main"):
try:data=[]item=str(item)link=''+re.findall(findLink,item)[0]
data.append(link)street=re.findall(findStreet,item)[0]data.append(street)area=re.findall(findArea,item)[0]data.append(area)size=re.findall(findSize,item)[0]#查找符合要求的字符串,形成列表#通過re庫,使用正則表達式查找指定的字符串3.4.1網絡爬蟲采集數據192021222324252627282930data.append(size.strip())price=re.findall(findPrice,item)[0]data.append(price)orientation=re.findall(findOrientation,item)[0]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國奶茶產品市場規(guī)模分析及投資前景規(guī)劃研究報告
- 2024-2030年中國大口徑HDPE水管項目投資風險分析報告
- 2024-2030年中國商品防偽標簽市場競爭狀況及投資趨勢分析報告
- 2024-2030年中國印刷滾筒抹布資金申請報告
- 2024年水利水電施工環(huán)保責任承諾書3篇
- 2024年度圖書印刷與網絡銷售渠道合作合同2篇
- 2024年版車位獨家銷售代理協議版B版
- 眉山藥科職業(yè)學院《生物化學(B類)》2023-2024學年第一學期期末試卷
- 2024年生物科技研究與發(fā)展合同
- 專業(yè)知識 電視新聞采訪與編輯中同期聲的技巧
- 氣相色譜檢測器FID-培訓講解課件
- 新教材人教A版高中數學選擇性必修第一冊全冊教學課件
- 《HSK標準教程1》-HSK1-L8課件
- 幼兒園小班繪本:《藏在哪里了》 課件
- 上冊外研社六年級英語復習教案
- 替班換班登記表
- 社會保險法 課件
- 阿利的紅斗篷 完整版課件PPT
- 橋梁工程擋土墻施工
- 供應商質量問題處理流程范文
- 實驗室生物安全手冊(完整版)資料
評論
0/150
提交評論