版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
成果形式:實(shí)踐報(bào)告成果名稱:Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)報(bào)告校內(nèi)華為大數(shù)據(jù)項(xiàng)目實(shí)訓(xùn)一、實(shí)踐目的1.了解爬蟲及其原理眾所周知,當(dāng)爬蟲在網(wǎng)絡(luò)上爬行時(shí),它會(huì)將Web上的網(wǎng)頁集合視為有向圖,并從給定的起始URL開始,根據(jù)某些策略跟蹤網(wǎng)頁中的鏈接。通常使用以下遍歷算法:(1)深度優(yōu)先算法
深度優(yōu)先搜索此算法是爬蟲在早期開發(fā)使用的方法之一。該算法的目標(biāo)是到達(dá)搜索結(jié)構(gòu)中的葉節(jié)點(diǎn)。在HTML等文件中,選擇超鏈接后,鏈接中的HTML文件將執(zhí)行深度優(yōu)先搜索算法。它的功能是在搜索剩余的超鏈接結(jié)果之前完全搜索各個(gè)鏈。深度優(yōu)先搜索跟蹤HTML文件上方的超鏈接,直到超鏈接無法繼續(xù)運(yùn)行,然后返回到HTML文件,最后繼續(xù)選擇可在HTML文件中使用的其他超鏈接。當(dāng)沒有其他超鏈接可以使用時(shí),搜索結(jié)束。(2)廣度優(yōu)先算法
廣度優(yōu)先算法該算法是指網(wǎng)絡(luò)爬蟲首先提取包含起始頁面的鏈接的所有網(wǎng)頁,然后選擇一個(gè)鏈接的網(wǎng)頁,并繼續(xù)抓取在該網(wǎng)頁中鏈接的所有網(wǎng)頁。這種搜索方法是實(shí)現(xiàn)通用WEB爬蟲的最佳算法。因?yàn)樗膬?yōu)點(diǎn)是易于實(shí)現(xiàn),并且可以避免陷入多層深度分支,并且該算法可以使WEB爬行程序并行處理,從而提高了它的掌握程度。。采取速度。(3)啟發(fā)式搜索算法
從人工智能的角度出發(fā),我們可以首先通過在線獲取的領(lǐng)域知識(shí)來評(píng)估要訪問的鏈接的價(jià)值,然后推斷出信息資源的分布,然后根據(jù)固定原則選擇最優(yōu)價(jià)值的鏈接。下次搜索訪問,最后找到最佳鏈接。要到達(dá)目標(biāo)節(jié)點(diǎn),請(qǐng)刪除壞節(jié)點(diǎn)并保留這些好節(jié)點(diǎn)。該算法主要用于主題爬蟲。分布式爬網(wǎng)程序的工作方式與集中式爬網(wǎng)程序相同,但分布式爬網(wǎng)程序需要m每個(gè)節(jié)點(diǎn)協(xié)作才能完成對(duì)網(wǎng)頁的爬網(wǎng),而分布式爬網(wǎng)程序比集中式爬網(wǎng)程序更有效。分布式爬蟲系統(tǒng)結(jié)構(gòu)通用,并且以多種方式工作。對(duì)于典型的分布式爬蟲系統(tǒng),每個(gè)節(jié)點(diǎn)不僅從網(wǎng)頁獲取URL,還從其他節(jié)點(diǎn)吸收URL.然后節(jié)點(diǎn)解析與URL對(duì)應(yīng)的頁面,并將不屬于其爬行范圍的URL轉(zhuǎn)發(fā)給其他節(jié)點(diǎn)。2.了解爬蟲歷史 網(wǎng)絡(luò)爬蟲源于20世紀(jì)90年代的google等搜索引擎,用來在互聯(lián)網(wǎng)上抓取網(wǎng)頁,然后由搜索引擎進(jìn)行索引和存儲(chǔ),為我們提供檢索服務(wù)。網(wǎng)絡(luò)爬蟲位于搜索引擎的后臺(tái),但卻不直接與用戶聯(lián)系。它屬于幕后技術(shù),長(zhǎng)期以來一直沒有得到開發(fā)人員的重視。從2005年之后,公眾對(duì)于網(wǎng)絡(luò)爬蟲技術(shù)的關(guān)注迅速升高。其中,各種個(gè)體、中小型爬蟲為其提供了巨大的動(dòng)力。爬蟲是一種非常實(shí)用的技術(shù)活動(dòng),因此可以從這張圖中估計(jì)出爬行動(dòng)物在互聯(lián)網(wǎng)上的數(shù)量增長(zhǎng)率。爬行動(dòng)物主要有兩種,如下所示。 大量開放源碼的網(wǎng)絡(luò)爬蟲系統(tǒng)使開發(fā)數(shù)據(jù)捕獲系統(tǒng)變得更加容易。但正因?yàn)槿绱耍叨确庋b的開放源碼系統(tǒng)使得很少有人愿意深入了解關(guān)鍵技術(shù),從而導(dǎo)致這種方式產(chǎn)生的爬行器質(zhì)量低下。谷歌和賓果等大型搜索引擎的爬蟲者通常沒有這些問題。這里我們主要討論低質(zhì)量的個(gè)人和小爬蟲。有人認(rèn)為互聯(lián)網(wǎng)爬蟲不是一個(gè)很優(yōu)雅的行業(yè),這種觀點(diǎn)是錯(cuò)誤的,只能說被低質(zhì)量的個(gè)人小爬蟲迷惑了,看不到行業(yè)的現(xiàn)狀。 這些劣質(zhì)個(gè)體和小型爬行動(dòng)物的主要問題表現(xiàn)在以下三個(gè)方面。 1.不遵守機(jī)器人協(xié)議。在連接到Web服務(wù)器之后,它不會(huì)檢測(cè)虛擬根目錄中是否存在robots.txt文件,而不管文件中指定的頁面訪問控制列表如何。每個(gè)人都知道這個(gè)協(xié)議是行業(yè)協(xié)議。忽視這一協(xié)議意味著該行業(yè)沒有監(jiān)管。 2.爬行策略未優(yōu)化。通常,開放源碼系統(tǒng)實(shí)現(xiàn)廣度優(yōu)先或深度優(yōu)先的策略,但它們不能優(yōu)化網(wǎng)頁的特定特性。例如,門戶類型頁面中的超鏈接數(shù)量非常大。如果這些鏈接直接進(jìn)入爬行任務(wù),它們很容易對(duì)Web服務(wù)器造成拒絕服務(wù)攻擊。。 3.多線程、分布式體系結(jié)構(gòu),這似乎是一項(xiàng)很好的技術(shù),對(duì)于網(wǎng)絡(luò)爬蟲來說只是一廂情愿的想法。如果客戶機(jī)架構(gòu)設(shè)計(jì)得很好,爬行策略、增量模式等都做得不好,就相當(dāng)于在服務(wù)器上創(chuàng)建了許多小爬蟲。因此,這種情況最終導(dǎo)致失敗和受傷的結(jié)果,這對(duì)網(wǎng)絡(luò)服務(wù)器和爬蟲不好。 由于互聯(lián)網(wǎng)的開放性和匿名性,這些爬蟲行為就像一些購(gòu)物者,他們不買東西,不看廣告,只復(fù)制價(jià)格拍照。就像那些在城市交通道路上迷路的汽車,他們不斷重復(fù)某些路線,不知道如何到達(dá)目的地。最終,它將不可避免地導(dǎo)致雙方(客戶-商店管理員,司機(jī)-交通管制員)陷入雙方之間的斗爭(zhēng),并惡化整個(gè)行業(yè)。 正如我所分析的,在大數(shù)據(jù)研究的應(yīng)用中沒有稻米烹飪。很多人想教大數(shù)據(jù)研究,但大數(shù)據(jù)還不夠。大流量數(shù)據(jù),大銀行數(shù)據(jù),大醫(yī)療數(shù)據(jù)。大數(shù)據(jù)不容易獲取和使用,所以只能依靠互聯(lián)網(wǎng)大數(shù)據(jù),當(dāng)然,自己的“互聯(lián)網(wǎng)+”也變得非常有價(jià)值。因此,隨著大數(shù)據(jù)應(yīng)用的發(fā)展,爬行器必然會(huì)越來越廣泛。 因此,在爬蟲領(lǐng)域,特別是滿足大量個(gè)人、中小互聯(lián)網(wǎng)大數(shù)據(jù)采集的需求,有必要進(jìn)一步規(guī)范行業(yè)(如機(jī)器人)協(xié)議,達(dá)成更廣泛的行業(yè)共識(shí)。此外,還將提高爬蟲軟件系統(tǒng)的質(zhì)量。這兩個(gè)方面是實(shí)現(xiàn)雙贏的基礎(chǔ)。二、實(shí)踐內(nèi)容1.常用爬蟲框架比較Scrapy框架:Scrapy框架是一個(gè)比較成熟的python爬蟲框架。它是由python開發(fā)的一個(gè)快速、高級(jí)的信息爬蟲框架。它可以有效地對(duì)網(wǎng)頁進(jìn)行爬行并提取結(jié)構(gòu)化數(shù)據(jù)。Scrapy具有廣泛的應(yīng)用,如爬蟲開發(fā)、數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)控、自動(dòng)測(cè)試等。Crawley框架:Crawley也是由python開發(fā)的一個(gè)爬蟲框架,旨在改變?nèi)藗儚幕ヂ?lián)網(wǎng)上提取數(shù)據(jù)的方式。波西亞框架:PoTyA框架是一種爬蟲框架,允許沒有編程基礎(chǔ)的用戶在視覺上爬行網(wǎng)頁。報(bào)紙框架:報(bào)紙框架是一個(gè)python爬蟲框架,用于提取新聞、文章和內(nèi)容分析。pythongoose框架:pythongoose框架提取的信息包括:<a>文章的主要內(nèi)容;<b>文章的主要圖片;(c)文章中嵌入的仁和YouTube/Vimeo視頻;<d>元描述;<e>metalabel2.數(shù)據(jù)爬取實(shí)戰(zhàn)(1)分析網(wǎng)頁;(2)爬取數(shù)據(jù);(3)數(shù)據(jù)整理、轉(zhuǎn)換;(4)數(shù)據(jù)保存、展示;三、實(shí)踐過程1、前期準(zhǔn)備:
首先要配置環(huán)境,這里使用到的是requests第三方庫,相比Beautifulsoup而言requests是個(gè)比較輕便的庫包。 1.requests安裝: 在cmd里將目錄切換到你的pip所在路徑。比如我的在E:\Python\Python36\Scripts這個(gè)目錄下,先切換到E盤,再進(jìn)入這個(gè)路徑(或者更簡(jiǎn)單,直接找到這個(gè)根目錄,按shift鼠標(biāo)右鍵,直接打開cmd) pipinstallrequests 出現(xiàn)下圖則安裝成功2.requests使用:我們可以介紹一下requests的基本使用方法,基本知道一個(gè)requests.get()和requests.post()就行了。requests的返回值可以有各種各樣的形式輸出,最常用的是“.text“和“.content“,前者輸出unicode,后者輸出二進(jìn)制。其他方法忘了可以查手冊(cè):requests快速上手3.python正則模塊使用:python的正則模塊是re,這里主要用到的函數(shù)是:findall(pattern,str,re.S)(re.S的意思是讓"."可以匹配換行符,不然有些標(biāo)簽頭和尾是分幾行的,就會(huì)匹配失?。┱齽t表達(dá)式用到的是:(.*?)():表示這個(gè)內(nèi)容是我們需要提取的.*:表示匹配任意字符0-n次?:表示非貪心,找到第一個(gè)就停下來2.分析網(wǎng)頁
打開百度圖片,輸入我們想要搜索的圖片點(diǎn)擊搜索
按F12打開開發(fā)者工具,
1.點(diǎn)擊開發(fā)者工具左上角的鼠標(biāo)跟隨;
2.鼠標(biāo)移動(dòng)到圖片點(diǎn)擊;
3.復(fù)制開發(fā)者工具里圖片的地址。在網(wǎng)頁空白處,鼠標(biāo)右鍵點(diǎn)擊查看網(wǎng)頁源代碼 Ctrl+F打開搜索框,粘貼剛剛復(fù)制的圖片地址 找到圖片地址,發(fā)現(xiàn)有四個(gè)地址thumbURL,middleURL,hoverURL,objURL,我們可以分析來判斷到底使用哪種,通過打開網(wǎng)頁發(fā)現(xiàn),objURL這種地址是最清晰的,所以我們選擇用objURL3、編寫代碼最終代碼如下:importrequestsimportosdefgetManyPages(keyword,pages):params=[]foriinrange(30,30*pages+30,30):params.append({'tn':'resultjson_com','ipn':'rj','ct':201326592,'is':'','fp':'result','queryWord':keyword,'cl':2,'lm':-1,'ie':'utf-8','oe':'utf-8','adpicid':'','st':-1,'z':'','ic':0,'word':keyword,'s':'','se':'','tab':'','width':'','height':'','face':0,'istype':2,'qc':'','nc':1,'fr':'','pn':i,'rn':30,'gsm':'1e','1488942260214':''})url='/search/acjson'urls=[]foriinparams:urls.append(requests.get(url,params=i).json().get('data'))returnurlsdefgetImg(dataList,localPath):ifnotos.path.exists(localPath):#如果給定的路徑不存在文件夾,新建文件夾os.mkdir(localPath)x=0forlistindataList:foriinlist:ifi.get('thumbURL')!=None:print('正在下載:%s'%i.get('thumbURL'))ir=requests.get(i.get('thumbURL'))open(localPath+'%d.jpg'%x,'wb').write(ir.content)x+=1else:print('圖片鏈接不存在')if__name__=='__main__':word=input("請(qǐng)輸入關(guān)鍵詞:")j=input("請(qǐng)輸入頁數(shù):")dataList=getManyPages(word,(int(j)))#參數(shù)1:關(guān)鍵字,參數(shù)2:要下載的頁數(shù)getImg(dataList,'e:/Python/test1/pictures2/')#參數(shù)2:指定保存的路徑4、運(yùn)行結(jié)果實(shí)踐體會(huì)在經(jīng)歷了大一的C語言大二的C++的學(xué)習(xí)后,在今年暑假的實(shí)踐周,我們參加了華為的大數(shù)據(jù)項(xiàng)目實(shí)訓(xùn),并在實(shí)訓(xùn)中,我真正意義上的認(rèn)識(shí)了python,在此之前,早已聽過大名,但是并沒有深入的認(rèn)識(shí)了解這門語言。在第一節(jié)課上,老師告訴我們什么是python,為什么要用python。并且舉了一個(gè)例子,用python計(jì)算一個(gè)超大數(shù)值的次方,結(jié)果瞬間便顯示了出來。配合著老師生動(dòng)的講解,讓我頓時(shí)對(duì)這門語言有了興趣。我原本以為大企業(yè)的老師講課會(huì)十分晦澀難懂,但實(shí)際上的體驗(yàn)卻是十分細(xì)致。能夠讓學(xué)生很好的理解語句的作用以及用法。在之后的幾天里,老師教我們用pycharm來搭建環(huán)境,講解有關(guān)python的歷史,然后開始嘗試用記事本來編寫python程序、執(zhí)行python腳本除此之外,還需要學(xué)習(xí)與其關(guān)聯(lián)的知識(shí),有如HTML:超文本標(biāo)記語言,一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。HTML的骨架格式、開發(fā)工具的使用、常用標(biāo)簽、鏈接和錨點(diǎn)、路徑、特殊字符、列表-(無序、有序、自定義)、表格、div和span、H5標(biāo)簽。這些巨量的知識(shí),也為我們帶來了很有成效的結(jié)果,制作一個(gè)簡(jiǎn)易的表格排行。這種東西對(duì)于我來說十分陌生,哪怕聽起來有所理解,但是自己做起來就十分困難,只能做一些基本的操作。學(xué)習(xí)的過程有些艱苦,但是在周圍同學(xué)以及老師的幫助下,這些難關(guān)也被我逐一攻破了。相關(guān)經(jīng)驗(yàn):最容易出錯(cuò)的地方是頁面請(qǐng)求的部分,requsts。get(),可以嘗試多個(gè)請(qǐng)求,設(shè)置合理的超時(shí),并隱藏:headers,proxy。問題可能是超時(shí)、請(qǐng)求超時(shí)和套接字超時(shí)。還需要注意的是,請(qǐng)求不是問題,但是返回的結(jié)果是有問題的,比如404、500、503返回,所以返回的響應(yīng)代碼也應(yīng)該判斷,當(dāng)返回的不是200時(shí),如何處理,最好把它打出來放到文檔中查看。每次調(diào)用open_url時(shí),都需要對(duì)各種情況做出判斷。對(duì)于爬行過程的記錄,必須在開始時(shí)考慮這一點(diǎn)。如果爬蟲程序在爬網(wǎng)過程中中斷,則不
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年租賃合同樣本:辦公設(shè)備租賃協(xié)議
- 商丘醫(yī)學(xué)高等??茖W(xué)?!缎W(xué)蒙語文課程與教學(xué)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 涼山商場(chǎng)保安合同范例
- 閉孔泡沫板施工方案
- 物業(yè)解聘保安合同范例
- 2024至2030年配套鎮(zhèn)流器項(xiàng)目投資價(jià)值分析報(bào)告
- 廣州電梯設(shè)備合同范例
- 酒吧代運(yùn)營(yíng)合同范例
- 襄樊租房合同范例
- 集采購(gòu)合同范例
- (高清版)TDT 1018-2008 建設(shè)用地節(jié)約集約利用評(píng)價(jià)規(guī)程
- 建筑遺產(chǎn)的保護(hù)與管理
- 評(píng)標(biāo)專家考核試題庫及答案
- 確保煤粉倉(cāng)安全措施
- 2019年一級(jí)注冊(cè)消防工程師繼續(xù)教育三科題庫+答案
- 園林裝飾行業(yè)分析
- 大學(xué)廣播與主持培養(yǎng)主持能力
- 美術(shù)創(chuàng)作中的家國(guó)情懷藝術(shù)家的民族自豪與國(guó)家認(rèn)同
- 健康龍江行動(dòng)監(jiān)測(cè)評(píng)估報(bào)告
- 2024年安徽馬鋼集團(tuán)招聘筆試參考題庫含答案解析
- 2023年廣東中考語文真題試卷及答案解析(文本版)
評(píng)論
0/150
提交評(píng)論