數(shù)據(jù)采集與預處理 課件 學習單元1-使用爬蟲技術進行數(shù)據(jù)采集_第1頁
數(shù)據(jù)采集與預處理 課件 學習單元1-使用爬蟲技術進行數(shù)據(jù)采集_第2頁
數(shù)據(jù)采集與預處理 課件 學習單元1-使用爬蟲技術進行數(shù)據(jù)采集_第3頁
數(shù)據(jù)采集與預處理 課件 學習單元1-使用爬蟲技術進行數(shù)據(jù)采集_第4頁
數(shù)據(jù)采集與預處理 課件 學習單元1-使用爬蟲技術進行數(shù)據(jù)采集_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

使用爬蟲技術進行數(shù)據(jù)采集學習單元1單元概述本單元主要介紹了爬蟲的相關概念及爬取網(wǎng)頁的基本過程。通過對靜態(tài)頁面爬取,使學習者了解爬蟲的爬取的基本原理;通過對scrapy框架技術和Nutch技術講解,讓學習者能夠編寫簡單的網(wǎng)絡爬蟲項目利用爬蟲技術進行數(shù)據(jù)采集。教學目標掌握爬蟲的概念、作用和流程。掌握靜態(tài)網(wǎng)頁爬取的基本流程。

了解crapy框架技術和Nutch技術的相關知識和基本理論。掌握常用的抓取網(wǎng)頁所需工具的下載、安裝與使用。熟練利用各種爬取工具進行網(wǎng)頁有用信息的爬取。任務1爬取靜態(tài)頁面數(shù)據(jù)

“社會輿情信息管理系統(tǒng)”需要搜集最新的職業(yè)教育信息來發(fā)布,尤其知名職教院校信息動態(tài)。例如,在一高職網(wǎng)站爬取信息。一般的高職網(wǎng)站都由靜態(tài)和動態(tài)兩類網(wǎng)頁構(gòu)成,為了增加學習的針對性,使用requests+BeautifulSoup爬取靜態(tài)頁面數(shù)據(jù),獲取網(wǎng)頁各部分數(shù)據(jù)內(nèi)容。任務實現(xiàn)的關鍵點是:requests庫的安裝與使用,BeautifulSoup庫的安裝與使用,以及利用requests+BeautifulSoup爬取靜態(tài)頁面數(shù)據(jù)的基本過程。任務分析1.安裝requests庫在CMD命令窗口下,只需要輸入命令pipinstallrequests,即可完成requests庫的安裝。任務實施2.使用requests庫獲取響應內(nèi)容網(wǎng)絡爬蟲是通過requests向瀏覽器發(fā)送請求,獲取請求內(nèi)容importrequests#發(fā)送請求,獲取服務器響應內(nèi)容r=requests.get("/")r.encoding='utf-8'print("文本編碼:",r.encoding)print("響應狀態(tài)碼:",r.status_code)print("字符串方式的響應體:",r.text)3.定制requests(1)傳遞URL參數(shù)

在URL中加入?yún)?shù)的形式是在問號后,以鍵/值的形式放在URL中:任務實施importrequestsr=requests.get('/list.aspx?news_type=1')print("URL已經(jīng)正確編碼:",r.url)print("字符串方式的響應體:\n",r.text)也可以把參數(shù)保存在字典中,用params構(gòu)建到URL中importrequestskey_dict={'news_type':'1'}r=requests.get('/list.aspx',params=key_dict)r.encoding='utf-8'print("URL已經(jīng)正確編碼:",r.url)print("字符串方式的響應體:\n",r.text)(2)定制請求頭利用Google瀏覽器構(gòu)建請求頭。因為打開Google瀏覽器,點擊鼠標右鍵,點擊檢查,就可以找到請求所需要的參數(shù):任務實施通過上圖,我們可以獲取如下信息:參數(shù)Host的值為'/'參數(shù)User-Agent的值為'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.100Safari/537.36',利用上面兩個參數(shù)定制請求頭,如下所示:任務實施importrequestsheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.100Safari/537.36','Host':''}r=requests.get("/",headers=headers)print("響應狀態(tài)碼:",r.status_code)(3)發(fā)送POST請求除了get請求外,還需要發(fā)送一些編碼格式為表單形式的數(shù)據(jù),有些網(wǎng)站需要登錄才能訪問,這樣就需要使用POST請求,也需要傳遞一個字典給Requests中的data參數(shù)。這個數(shù)據(jù)字典就會發(fā)出請求的時候自動編碼為表單形式,如下所示:任務實施importrequestskey_dict={'key1':'value1','key2':'value2'}r=requests.post('/post',data=key_dict)print("URL已經(jīng)正確編碼:",r.url)print(r.text)4.安裝BeautifulSoup庫BeautifulSoup3目前已經(jīng)停止開發(fā),推薦在現(xiàn)在的項目中使用BeautifulSoup4。在windows系統(tǒng)下,只需要輸入命令pipinstallbeautifulsoup4,即可完成beautifulsoup4庫的安裝。5.使用requests+BeautifulSoup爬取靜態(tài)頁面數(shù)據(jù)以爬取河北工業(yè)職業(yè)技術學院工院新聞頁的新聞列表為例,基本實現(xiàn)步驟如下所示::(1)打開目標網(wǎng)頁,確定要爬取的數(shù)據(jù)在網(wǎng)頁源代碼中的位置任務實施新建一記事本文件用于臨時存放我們拷貝的位置路徑。打開新建的記事本文件,右擊選擇“粘貼”便將我們?yōu)g覽的網(wǎng)頁中得第一條新聞標題在html代碼中的位置信息粘貼過來,本例中粘貼的文本內(nèi)容為“body>div.jz>div>div.ny_right>div>div.navjz.ny_newslb>ul>li:nth-child(1)>a”,去掉“l(fā)i”后面的“:nth-child(1)”代碼后,路徑“body>div.jz>div>div.ny_right>div>div.navjz.ny_newslb>ul>li>a”則變?yōu)閍標簽在html代碼中的位置,暫存路徑。任務實施(2)編寫爬蟲文件任務實施importrequestsfrombs4importBeautifulSoupurl='/zhxw/gyxw.htm'strhtml=requests.get(url)strhtml.encoding=strhtml.apparent_encodingsoup=BeautifulSoup(strhtml.text,'lxml')data=soup.select('body>div.jz>div>div.ny_right>div>div.navjz.ny_newslb>ul>li>a')foritemindata:result={'title':item.get_text(),'link':item.get('href'),}print(result)1.爬蟲的概念爬蟲更官方點的名字叫數(shù)據(jù)采集,英文一般稱作spider,是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。簡單來說,網(wǎng)絡爬蟲就是根據(jù)一定算法實現(xiàn)編程開發(fā),主要通過URL實現(xiàn)數(shù)據(jù)的抓取和發(fā)掘。網(wǎng)絡爬蟲可以自動化瀏覽網(wǎng)絡中的信息,當然瀏覽信息的時候需要按照我們制定的規(guī)則進行,這些規(guī)則我們稱之為網(wǎng)絡爬蟲算法。使用Python可以很方便地編寫出爬蟲程序,進行互聯(lián)網(wǎng)信息的自動化檢索。必備知識2.爬蟲的功能現(xiàn)如今大數(shù)據(jù)時代已經(jīng)到來,網(wǎng)絡爬蟲技術成為這個時代不可或缺的一部分,爬蟲的常用功能如圖所示:必備知識3.爬蟲的類型網(wǎng)絡爬蟲根據(jù)系統(tǒng)結(jié)構(gòu)和開發(fā)技術,大致可以分為4種類型:通用網(wǎng)絡爬蟲、聚焦網(wǎng)絡爬蟲、增量式網(wǎng)絡爬蟲和深層網(wǎng)絡爬蟲。實際的網(wǎng)絡爬蟲系統(tǒng)通常是幾種爬蟲技術相結(jié)合實現(xiàn)的。必備知識(1)通用網(wǎng)絡爬蟲通用網(wǎng)絡爬蟲又稱全網(wǎng)爬蟲,它將爬行對象從一些種子URL擴充到整個Web,主要為門戶站點搜索引擎和大型Web服務提供商采集數(shù)據(jù)。(2)聚焦網(wǎng)絡爬蟲聚焦網(wǎng)絡爬蟲又稱主題網(wǎng)絡爬蟲,是指選擇性地爬行那些與預先定義好的主題相關頁面的網(wǎng)絡爬蟲。3.爬蟲的類型必備知識(3)增量式網(wǎng)絡爬蟲增量式網(wǎng)絡爬蟲是指對已下載網(wǎng)頁采取增量式更新和只爬行新產(chǎn)生的或者已經(jīng)發(fā)生變化網(wǎng)頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面。(4)深層網(wǎng)絡爬蟲深層網(wǎng)絡爬蟲是大部分內(nèi)容不能通過靜態(tài)URL獲取的、隱藏在搜索表單后的、只有用戶提交一些關鍵詞才能獲得的網(wǎng)絡頁面。4.爬蟲的組成在爬蟲的系統(tǒng)框架中,主過程由控制器,解析器,資源庫三部分組成。(1)控制器控制器是網(wǎng)絡爬蟲的中央控制器,它主要是負責根據(jù)系統(tǒng)傳過來的URL鏈接,分配一線程,然后啟動線程調(diào)用爬蟲爬取網(wǎng)頁的過程。(2)解析器解析器是負責網(wǎng)絡爬蟲的主要部分,其負責的工作主要有:下載網(wǎng)頁的功能,對網(wǎng)頁的文本進行處理,如過濾功能,抽取特殊HTML標簽的功能,分析數(shù)據(jù)功能。(3)資源庫主要是用來存儲網(wǎng)頁中下載下來的數(shù)據(jù)記錄的容器,并提供生成索引的目標源。中大型的數(shù)據(jù)庫產(chǎn)品有:Oracle、SqlServer等。必備知識5.Requests庫獲取響應的內(nèi)容的過程,等同于我們使用瀏覽器的過程,我們在瀏覽器中輸入網(wǎng)址,瀏覽器就會向服務器請求內(nèi)容,服務器返回的就是HTML代碼,瀏覽器就會自動解析代碼。而我們的網(wǎng)絡爬蟲與瀏覽器發(fā)送請求的過程是一樣的,通過requests向瀏覽器發(fā)送請求獲取請求內(nèi)容;同時我們通過使用requets發(fā)送請求獲取數(shù)據(jù)。Requets可以發(fā)送get、post請求,還可以發(fā)送put、delete、options、head等請求。必備知識6.BeautifulSoup庫簡單來說,BeautifulSoup是python的一個庫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù)。BeautifulSoup提供一些簡單的、python式的函數(shù)用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù)。必備知識任務2使用scrapy框架爬取動態(tài)數(shù)據(jù)

在上一個任務的基礎之上,為了“社會輿情信息管理系統(tǒng)”獲取更多的動態(tài)網(wǎng)頁的信息。我們繼續(xù)爬取高職網(wǎng)站動態(tài)網(wǎng)頁的最新信息,并將信息進行存儲。我們繼續(xù)使用scrapy爬蟲框架技術爬取河北工業(yè)職業(yè)技術學院的工院新聞頁,將爬取到的網(wǎng)頁源代碼信息保存到hbcit_news.html中,然后提取網(wǎng)頁中新聞列表的標題和發(fā)布日期等相關數(shù)據(jù),并將爬取到的數(shù)據(jù)存儲到hbcit_news.csv中。任務實現(xiàn)的關鍵點是:Scrapy框架的環(huán)境安裝與部署,以及使用scrapy框架爬取動態(tài)數(shù)據(jù)的基本過程。任務分析1.安裝Scrapy

打開cmd命令窗口,運行pip命令

pipinstallScrapy任務實施2.新建Scrapy項目

首先確定項目目錄,然后打開cmd命令窗口,將命令行路徑切換到自定義的項目目錄,運行如下命令創(chuàng)建項目mySpider:scrapystartprojectmySpider

運行成功,在PyCharm環(huán)境中可以看到,mySpider項目的自動生成的文件和目錄的結(jié)構(gòu)如圖所示3.定義要抓取的數(shù)據(jù)

在items.py文件中定義自己要抓取的數(shù)據(jù)。在PyCharm中打開mySpider目錄下的items.py文件,文件中已經(jīng)自動生成里繼承自scrapy.Item的MyspiderItem類,我們只需要修改MyspiderItem類的定義,為它添加屬性即可,添加后代碼如下:任務實施importscrapyclassMyspiderItem(scrapy.Item):title=scrapy.Field()#抓取內(nèi)容,新聞標題date=scrapy.Field()#抓取內(nèi)容,新聞發(fā)布時間4.創(chuàng)建爬蟲,爬取網(wǎng)頁的源代碼

首先打開cmd命令窗口,將命令行路徑切換到E:\scrapyPro\mySpider\mySpider\spiders,然后使用創(chuàng)建爬蟲的命令來創(chuàng)建一個名為hbcit的爬蟲,運行代碼如下:任務實施scrapygenspiderhbcit""上例中,爬蟲名稱是hbcit,爬取域的范圍為。

運行成功后,在PyCharm的mySpider/spiders目錄下會產(chǎn)生一個新創(chuàng)建的爬蟲文件hbcit.py。爬蟲程序編寫完畢,在cmd命令窗口中將命令行路徑切換到E:\scrapyPro\mySpider\mySpider\spiders,然后使用運行爬蟲的命令來運行hbcit爬蟲,運行代碼如下:scrapycrawlhbcit4.創(chuàng)建爬蟲,爬取網(wǎng)頁的源代碼

在當前文件夾會產(chǎn)生一個名稱為hbcit_news.html的靜態(tài)網(wǎng)頁文件,文件內(nèi)容就是使用爬蟲爬取的工院新聞頁的全部源代碼信息,輸出結(jié)果部分截圖如下圖所示:任務實施5.分析源代碼,提取數(shù)據(jù)

確定要提取的目標數(shù)據(jù),打開hbcit_news.html頁面查看目標數(shù)據(jù)所處的網(wǎng)頁結(jié)構(gòu),部分網(wǎng)頁代碼如下:任務實施<divclass="navjzny_newslb"><ul><li><span>2020-06-23</span><ahref="../info/1004/5802.htm"target="_blank"title="圓夢工院揚帆遠航——我院首屆來華留學生畢業(yè)典禮隆重舉行">圓夢工院揚帆遠航——我院首屆來華留學生畢業(yè)典禮隆重舉行</a></li><li><span>2020-06-19</span><ahref="../info/1004/5774.htm"target="_blank"title="中國共產(chǎn)黨河北工業(yè)職業(yè)技術學院第三次代表大會勝利閉幕">中國共產(chǎn)黨河北工業(yè)職業(yè)技術學院第三次代表大會勝利閉幕</a></li>......</ul></div>5.分析源代碼,提取數(shù)據(jù)

打開hbcit.py文件,引入mySpider/items.py文件中定義的MyspiderItem類,修改parse()方法,修改代碼如下:任務實施importscrapyfrommySpider.itemsimportMyspiderItemclassHbcitSpider(scrapy.Spider):name='hbcit'allowed_domains=['']start_urls=['/zhxw/gyxw.htm']defparse(self,response):items=[]foreachinresponse.xpath("http://div[@class='navjzny_newslb']/ul/li"):item=MyspiderItem()date=each.xpath("span/text()").extract()title=each.xpath("a/text()").extract()item["date"]=date[0]item["title"]=title[0]items.append(item)returnitems5.分析源代碼,提取數(shù)據(jù)

爬蟲程序修改完畢,打開cmd命令窗口,將命令行路徑切換到E:\scrapyPro\mySpider\mySpider\spiders,再次使用運行爬蟲的命令來運行hbcit爬蟲,運行代碼如下:任務實施scrapycrawlhbcit

命令執(zhí)行成功后,cmd窗口打印輸出我們所獲取的新聞列表信息,部分輸出結(jié)果如下:2020-07-0614:13:03[scrapy.core.scraper]DEBUG:Scrapedfrom<200/zhxw/gyxw.htm>{'date':'2020-06-05','title':'學院領導走進“云端”課堂,指導課程線上教學'}2020-07-0614:13:03[scrapy.core.scraper]DEBUG:Scrapedfrom<200/zhxw/gyxw.htm>{'date':'2020-06-03','title':'我院開展疫情防控模擬演練'}2020-07-0614:13:03[scrapy.core.scraper]DEBUG:Scrapedfrom<200/zhxw/gyxw.htm>{'date':'2020-05-29','title':'我院“對話最美逆行者”專場報告會成功舉辦'}6.存儲爬取數(shù)據(jù)

使用Scrapy框架制作爬蟲最后一步就是將獲取的數(shù)據(jù)進行輸出存儲,我們只需在運行爬蟲命令時添加-o選項然后指定輸出文件格式即可,我們以輸出CSV文件格式為例,運行命令為:任務實施scrapycrawlhbcit-ohbcit_news.csv

程序運行完畢,在當前目錄下自動創(chuàng)建了hbcit_news.csv文件,我們用Excel或WPS打開,hbcit_news.csv文件部分內(nèi)容截圖如下圖所示:必備知識1.爬蟲的原理(1)通用網(wǎng)絡爬蟲的實現(xiàn)原理及基本過程通用爬蟲是一個自動提取網(wǎng)頁的程序,它為搜索引擎從Internet上下載網(wǎng)頁,是搜索引擎的重要組成部分。爬取網(wǎng)頁的基本流程如下圖所示必備知識1.爬蟲的原理(2)聚焦網(wǎng)絡爬蟲的實現(xiàn)原理及基本過程聚焦網(wǎng)絡爬蟲的指定原理和過程與通用爬蟲大致相同,在通用爬蟲的基礎上增加兩個步驟:定義爬取目標和篩選過濾URL,原理如下圖所示。必備知識2.使用Scrapy框架的一般步驟(1)新建項目,基本命令格式:scrapystartproject項目名稱(2)明確目標,明確想要抓取的目標,編寫items.py;(3)創(chuàng)建爬蟲,基本命令格式:scrapygenspider爬蟲名稱"爬蟲域"(4)運行爬蟲,基本命令格式:scrapycrawl爬蟲名稱(5)保存數(shù)據(jù),基本命令格式:scrapycrawl爬蟲名稱-o保存數(shù)據(jù)的文件名任務3使用Nutch爬取數(shù)據(jù)

在“社會輿情信息管理系統(tǒng)”中需要一些物聯(lián)網(wǎng)信息技術發(fā)展的最新信息,尤其智慧城市發(fā)展的信息動態(tài)。為完成此任務,我們使用Nutch來爬取相關網(wǎng)站,獲取相關最新動態(tài)數(shù)據(jù)信息。Nutch的插件機制使得開發(fā)者可以靈活地定制網(wǎng)頁抓取策略,在本任務中,主要介紹了利用Nutch技術進行網(wǎng)頁數(shù)據(jù)爬取的基本過程。我們首先對Nutch爬取數(shù)據(jù)的環(huán)境安裝與設置,然后利用Nutch進行數(shù)據(jù)爬取,最后利用Solr對爬取結(jié)果進行查詢操作。任務實現(xiàn)的關鍵點是Nutch與Solr的安裝與集成。任務分析1.安裝JDK和Tomcat網(wǎng)上下載jdk1.8和Tomcat8.5,首先安裝jdk1.8,然后安裝Tomcat,全部采用默認安裝。jdk1.8安裝完成以后,環(huán)境變量配置如下圖所示:任務實施任務實施2.Cygwin安裝:打開官網(wǎng)網(wǎng)頁,下載“setup-x86_64.exe”的文件進行安裝。

cygwin官網(wǎng)下載頁面任務實施2.Cygwin安裝步驟1:說明界面,單擊“下一步”步驟2:安裝方式選擇默認的“InstallfromInternet”步驟3:選擇安裝目錄任務實施2.Cygwin安裝步驟4:選擇保存路徑步驟5:選擇連接Internet的方式本案例選擇“DirectConnection”步驟6:添加并選擇下載cygwin的站點任務實施2.Cygwin安裝步驟7:下載完成后點擊下一步步驟8:選擇需要下載安裝的組件包步驟9:開始安裝任務實施2.Cygwin安裝步驟10:安裝成功步驟11:安裝驗證任務實施3.Nutch安裝官網(wǎng)下載Nutch。任務實施3.Nutch安裝第一步:解壓“apache-nutch-1.9-bin.zip”并將解壓的文件夾“apache-nutch-1.9”完整地拷貝到Cygwin的安裝目錄的“home”文件夾下面。第二步:配置Nutch爬取的網(wǎng)站列表。第三步:配置“apache-nutch-1.9\conf\regex-urlfilter.txt”。第四步:配置“apache-nutch-1.9\conf\nutch-site.xml”。任務實施4.Solr安裝及與Tomcat、Nutch集成登錄官網(wǎng)下Solr。本案例下載的版本是4.10.1的文件“solr-4.10.0.zip”。任務實施4.Solr安裝及與Tomcat、Nutch集成(1)solr安裝及與Tomcat的集成第一步:將下載下來的“solr-4.10.0.zip”解壓,解壓后的目錄為“solr-4.10.0”。第二步:將solr-4.10.0/example/文件夾下的solr文件夾拷貝到硬盤中的某個位置,用于solr操作的支持。如本例目錄為“D:\solrHome”。第三步:將solr-4.10.0/example/webapps/目錄下的solr.war復制到tomcat8.5/webapps目錄下。第四步:將solr-4.10.0/example/lib/ext目錄下的所有的jar包全部拷貝到“tomcat8.5/webapp/solr/WEB-INF/lib”下面。任務實施4.Solr安裝及與Tomcat、Nutch集成(2)solr與Nutch的集成將“apache-nutch-1.9/conf/schema-solr4.xml”文件直接拷貝到“d:/solrHome/solr/collection1/conf”下將該目錄已有的“schem

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論