python網(wǎng)絡(luò)爬蟲實(shí)訓(xùn)心得_第1頁
python網(wǎng)絡(luò)爬蟲實(shí)訓(xùn)心得_第2頁
python網(wǎng)絡(luò)爬蟲實(shí)訓(xùn)心得_第3頁
python網(wǎng)絡(luò)爬蟲實(shí)訓(xùn)心得_第4頁
python網(wǎng)絡(luò)爬蟲實(shí)訓(xùn)心得_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

成果形式:實(shí)踐報(bào)告成果名稱:關(guān)于python網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)關(guān)于python網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)的實(shí)訓(xùn)心得實(shí)踐目的1.知道爬蟲的定義:抓取網(wǎng)站或者應(yīng)用的內(nèi)容,提取實(shí)用的價(jià)值。模仿用戶在瀏覽器或app應(yīng)用上的操作,實(shí)現(xiàn)自動(dòng)化。2.學(xué)習(xí)python爬蟲的構(gòu)架和流程:經(jīng)過URL管理器,讓待爬取的url集合和已爬取的url匯總,再傳遞待爬取的url給網(wǎng)頁下載器;再通過網(wǎng)頁下載器,爬取url對(duì)應(yīng)網(wǎng)頁,存儲(chǔ)為字符串,傳遞給網(wǎng)頁解析器;通過網(wǎng)頁解析器提取存儲(chǔ)信息。3.學(xué)習(xí)通過寫代碼實(shí)際操作實(shí)現(xiàn)phthon爬蟲二、實(shí)踐內(nèi)容1.項(xiàng)目的分析1.解釋什么是爬蟲,并舉例:2.學(xué)會(huì)使用火狐瀏覽器開發(fā)者工具2.項(xiàng)目的設(shè)計(jì)1.寫一個(gè)簡(jiǎn)單的html網(wǎng)頁2.查看寫出來的網(wǎng)頁3.項(xiàng)目的實(shí)現(xiàn)(代碼)1.輸入登錄名2在寫出的數(shù)組值后追加元素3計(jì)算一組數(shù)組中元素22出現(xiàn)的次數(shù)4.項(xiàng)目使用說明實(shí)踐過程項(xiàng)目的分析1.解釋爬蟲,并舉例:簡(jiǎn)單的爬蟲就是移用模塊,利用函數(shù)。get函數(shù)從給出的URL中得到數(shù)據(jù),然后打印出狀態(tài)碼和獲取內(nèi)容。注意:.text對(duì)應(yīng)的是Unicode類型,.content對(duì)應(yīng)的是bytes型。當(dāng)需要的數(shù)據(jù)是文本時(shí),用.text,當(dāng)需要下載圖片時(shí),用.content,.text返回的值與.content的值有所不同如圖所示:當(dāng)我們準(zhǔn)備大量,高頻率訪問網(wǎng)站時(shí),特別是訪問的還是類似于京東這樣的商業(yè)網(wǎng)站,不能只是用個(gè)get加個(gè)url,這樣做是無效的,得不到網(wǎng)站數(shù)據(jù)的,需要進(jìn)一步輸入相關(guān)代碼,才能爬取京東網(wǎng)站的數(shù)據(jù)。2.學(xué)會(huì)通過火狐瀏覽器開發(fā)者工具爬取一個(gè)瀏覽器。需要用到火狐瀏覽器開發(fā)者工具,打開火狐瀏覽器按F12!第一步輸入網(wǎng)址,然后按F12,找到網(wǎng)絡(luò)這一欄。它會(huì)提示重新載入,那就再按一下F5,再重新載入,如圖所示。注意以下幾欄。然后找到并點(diǎn)開我們需要的,也就是第一個(gè),如圖示:這時(shí)頁面上就會(huì)顯示相應(yīng)的信息。包括:消息頭,Cookie,參數(shù),響應(yīng),耗時(shí),倉(cāng)庫追蹤。2.項(xiàng)目的設(shè)計(jì)1.寫一個(gè)簡(jiǎn)單的html網(wǎng)頁<!DOCTYPEhtml>

<htmllang="en">

<head>

<metacharset="UTF-8">

<title>數(shù)學(xué)類1701尹春梅</title>

</head>

<body>

<ahref="/xhtml/">統(tǒng)計(jì)學(xué)院</a>

<buttontype="submit">提交</button>

</body>

</html>運(yùn)行結(jié)果:2.Python爬蟲架構(gòu)由調(diào)度器、URL管理器、網(wǎng)頁下載器、網(wǎng)頁解析器、應(yīng)用程序組成。調(diào)度器:負(fù)責(zé)調(diào)度URL管理器、下載器、解析器之間的工作,讓程序平穩(wěn)運(yùn)行。URL管理器:實(shí)現(xiàn)待爬取的URL和已爬取的URL地址的收集,經(jīng)過內(nèi)存、數(shù)據(jù)庫、緩存數(shù)據(jù)庫來完成收集。網(wǎng)頁下載器:通過傳入U(xiǎn)RL地址來下載網(wǎng)頁,將網(wǎng)頁轉(zhuǎn)換成一個(gè)字符串,網(wǎng)頁下載器包括需要登錄、代理、和cookie,requests網(wǎng)頁解析器:對(duì)一個(gè)已經(jīng)完成的網(wǎng)頁字符串進(jìn)行解析,提取出符合要求的信息,或者根據(jù)DOM樹的解析方法來解析。應(yīng)用程序:提取的網(wǎng)頁中的各類數(shù)據(jù)組成的一個(gè)程序。代碼如下:fromurllibimportrequest,parse

fromhttpimportcookiejar

ur1='/translate'

form_data={}

data=parse.urlencode(form_data).encode('utf-8')

headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/66.0.3359.170Safari/537.36'}

req=request.Request(ur1,data=data,headers=headers)

cookie=cookiejar.CookieJar()

handler=request.HTTPCookieProcessor(cookie)

opener=request.build_opener(handler)

responce=opener.open(req)

html=responce.read().decode()

print(html)、3.項(xiàng)目的實(shí)現(xiàn)(代碼)1.輸入登錄名:n=1

whilen<4:

username=input("請(qǐng)輸入用戶名:")

password=input("請(qǐng)輸入密碼:")

ifusername=="尹春梅"andpassword=="1704970102":

print("登錄成功")

n=5

else:

ifn==3:

print("密碼錯(cuò)誤")

n=5

else:

n=n+1結(jié)果:2在下列數(shù)組值后追加元素L1=[1,2,3,22,4,]

L1.append(5)

L1.append("caijing")

L1.append([1100,0011])

print(l1)結(jié)果:3計(jì)算下列數(shù)組中元素22出現(xiàn)的次數(shù)li=[11,22,33,22,44,5,'alex',[1234,1234]]

c=li.count(22)

print(c)結(jié)果:F:\programdata\Anaconda3\python.exeC:/Users/微軟中國(guó)/PycharmProjects/untitled/jjj.py2Processfinishedwithexitcode04.項(xiàng)目使用說明第一步:抓取網(wǎng)頁先隨機(jī)選取一些URL,將選取得到的URL放入待抓取URL隊(duì)列中,取出待抓取URL,通過解析得到主機(jī)IP,下載URL所對(duì)應(yīng)的相關(guān)網(wǎng)頁,實(shí)現(xiàn)一次循環(huán)。之后通過新網(wǎng)站向搜索引擎提交網(wǎng)址在其他網(wǎng)站上設(shè)置新網(wǎng)站外鏈搜索引擎和DNS解析服務(wù)商,這樣就實(shí)現(xiàn)了抓取網(wǎng)頁。第二步:數(shù)據(jù)存儲(chǔ)將數(shù)據(jù)存入原始頁面數(shù)據(jù)庫。頁面數(shù)據(jù)與用戶瀏覽器得到的HTML完全一樣。第三步:預(yù)處理對(duì)爬蟲抓取回來的頁面進(jìn)行預(yù)處理。提取文字中文分詞消除噪音索引處理鏈接關(guān)系計(jì)算特殊文件處理.第四步:提供檢索服務(wù),網(wǎng)站排名為用戶提供關(guān)鍵字搜索服務(wù),也就是用戶輸入一個(gè)詞語,就會(huì)聯(lián)想到相似的語句,再將用戶搜索得到的信息展現(xiàn)給用戶。同時(shí)會(huì)根據(jù)頁面的鏈接的訪問量排名來進(jìn)行網(wǎng)站排名,排名值高的網(wǎng)站在搜索結(jié)果中會(huì)排名較前。四、實(shí)踐體會(huì)通過兩周的學(xué)習(xí),學(xué)習(xí)了python,讓我會(huì)寫一些簡(jiǎn)單代碼,對(duì)爬蟲有了一定的學(xué)習(xí),學(xué)習(xí)心得如下:很感謝學(xué)校安排了兩周關(guān)于python的學(xué)習(xí),讓我對(duì)它有了許多了解,也對(duì)之后繼續(xù)學(xué)習(xí)它產(chǎn)生了濃烈的興趣。在沒有接觸它之前,從學(xué)長(zhǎng)學(xué)姐那里聽說一些關(guān)于python的信息,感覺它是一門很難的課程,擔(dān)心自己學(xué)不好它。后來上課的時(shí)候發(fā)現(xiàn),老師講的很清楚,也很生動(dòng),只要靜下心來學(xué),就一定可以的。開始上課的第一天,老師就舉例子給我們解釋了什么是phthon,還布置了作業(yè),讓我們?cè)谡n后也積極搜索吸收關(guān)于python的知識(shí)。第一天的學(xué)習(xí),讓我了解到python的運(yùn)行過程并不復(fù)雜,代碼在運(yùn)行的過程中由CPU進(jìn)行編譯,一邊編譯一邊執(zhí)行腳本語言,不像編譯型語言那樣需要先將代碼編譯成二進(jìn)制才能運(yùn)行。像這樣專業(yè)化的術(shù)語知識(shí),開拓了我平時(shí)的知識(shí)面,因?yàn)槠綍r(shí)接觸最多的是數(shù)學(xué)公式和定理,正好通過這次學(xué)習(xí),能夠豐富自己其他方面的知識(shí),第一天對(duì)自己之后的學(xué)習(xí)充滿期待,希望自己之后能熟練運(yùn)用python來解決一些實(shí)際問題。雖然明白學(xué)習(xí)一門新的課程會(huì)有許多挑戰(zhàn),但是沒想到挑戰(zhàn)確實(shí)挺多的,首先是對(duì)于一些新鮮知識(shí)的理解與吸收,例如老師提到的程序塊,我總是容易將它與程序聯(lián)系起來,還很疑惑二者到底有什么區(qū)別,程序塊是怎么定義的。后來在上課間隙,通過提問老師,讓我的問題得到了解答:程序塊是根據(jù)代碼的縮進(jìn)來表示程序的塊和代碼的層次,而程序通過一個(gè)邏輯行單位進(jìn)行執(zhí)行,一個(gè)邏輯行又可以由多個(gè)物理行組成,一個(gè)物理行又可以分成多個(gè)邏輯行,我們通過“;”來分隔同一物理行的多個(gè)邏輯行。通過老師的解答,自己再多加以理解,類似于這樣的專業(yè)知識(shí)就清楚明白多了。這是剛開始學(xué)習(xí)所面對(duì)的知識(shí)點(diǎn)上的困惑,在之后的學(xué)習(xí)時(shí)間,老師著重講解了如何寫簡(jiǎn)單的網(wǎng)頁,如何實(shí)現(xiàn)一些簡(jiǎn)單的項(xiàng)目,如何實(shí)現(xiàn)爬取數(shù)據(jù)等。正如常言道,學(xué)習(xí)了理論知識(shí)之后,應(yīng)該把它運(yùn)用到生活實(shí)踐中,就是白學(xué)了。所以在經(jīng)歷了兩天關(guān)于python的理論知識(shí)的學(xué)習(xí)后,老師開始帶領(lǐng)我們?cè)谧约旱碾娔X上實(shí)際操作。先用老師發(fā)的程序安裝包在各自的電腦上安裝了程序后,老師開始教學(xué)。老師的教學(xué)也照顧到了每位同學(xué)(因?yàn)樯险n人數(shù)較多,有時(shí)候去晚了可能就會(huì)坐在后排,聽不清老師的講解,但是老師每次都會(huì)努力提高音量,并且一步一步的當(dāng)場(chǎng)在電腦上輸入代碼,讓同學(xué)們也跟著他同步輸入,助教老師也會(huì)在教室里走動(dòng),隨時(shí)幫助輸入錯(cuò)誤的同學(xué)),老師講解一遍之后,會(huì)留給我們一些時(shí)間,讓我們?cè)僭囈槐椋挥写_保了大家基本上都會(huì)這一個(gè)代碼后,老師才接著講后來的代碼。下課后。老師會(huì)在我們的學(xué)習(xí)群里發(fā)放當(dāng)天的課堂重點(diǎn)筆記,以及上課我們所寫的所有代碼,還會(huì)布置相應(yīng)的題目。正是老師這樣細(xì)致的教學(xué),讓我們能及時(shí)的發(fā)現(xiàn)問題并解決問題。在課后時(shí)間還有充足的時(shí)間來嘗試做題,通過做題加深上課的印象,將上課所學(xué)的,繼續(xù)延伸拓展。這樣的學(xué)習(xí)方法,真的是幫助我能在短期的時(shí)間內(nèi)吸收新的知識(shí),很感謝老師的耐心幫助。輸入代碼是一件很嚴(yán)謹(jǐn)?shù)氖虑?,有時(shí)候輸錯(cuò)一個(gè)符號(hào)或者沒有區(qū)分大小寫,輸出來的代碼都是不能運(yùn)行的。而我又是一個(gè)比較粗心的人,所以特別容易輸錯(cuò)了,印象最深的是在要求寫一個(gè)代碼,代碼要求呈現(xiàn)的結(jié)果是一個(gè)登錄的網(wǎng)頁,登陸網(wǎng)頁要包含許多中文信息。這也就意味著在輸入的過程中要隨時(shí)注意切換中英文和大小寫。我小心翼翼的輸入每一個(gè)符號(hào),還要隨時(shí)注意切換中英文,大小寫。其實(shí)切換中英文還是很明顯能看出不同的,但是在輸入標(biāo)點(diǎn)時(shí),就很容易出錯(cuò)了。當(dāng)我輸入一個(gè)漢字詞語時(shí),需要用符號(hào)將輸入的漢字詞語引用出來,而這時(shí)就需要用英文狀態(tài)下的雙引號(hào),稍不注意就輸錯(cuò)了。當(dāng)我好不容易輸完所有字符,卻運(yùn)行不了自己期待的頁面時(shí),就趕緊去查看到底是那離輸錯(cuò)了,但是從頭到尾檢查下來也找不到問題出在哪里了。最后,通過舉手尋求老師的幫助后才發(fā)現(xiàn)是我一個(gè)標(biāo)點(diǎn)符號(hào)輸錯(cuò)了,應(yīng)該是英文狀態(tài)下的符號(hào),被我輸成中文狀態(tài)下了,所以是肯定運(yùn)行不了。通過這件事情,讓我明白在之后學(xué)習(xí)的過程中一定要耐心細(xì)致,正如不積硅步,無以至千里。只有把每一步都做好了,才可能會(huì)實(shí)現(xiàn)最后的結(jié)果。這也是這次學(xué)習(xí)帶給我的最大的收獲:在互聯(lián)網(wǎng)高速發(fā)展的現(xiàn)在,我們?cè)絹碓阶非笏俣鹊奶嵘?,而忽略了品質(zhì)結(jié)果,一味的追求快,所獲得的結(jié)果是不言而喻的。萬事必做于細(xì),才能做到萬無一失,精益求精就一定可以取得好的成果。當(dāng)我一步一步慢慢的認(rèn)真的輸入字符,在一次性輸入運(yùn)行成功的時(shí)候,心情非常激動(dòng),而實(shí)際上,像這樣一次性實(shí)現(xiàn)代碼的運(yùn)行比一次又一次調(diào)試修改節(jié)省了更多的時(shí)間,也養(yǎng)成了自己耐心細(xì)致的品質(zhì)。我也相信在之后的其他學(xué)習(xí)生活中,我會(huì)繼續(xù)秉承這樣的態(tài)度去做好每件事情,特別是在學(xué)習(xí)數(shù)學(xué)的過程中,這是非常實(shí)用的,稍不注意就可能算錯(cuò)一道習(xí)題而陷入死循環(huán)的狀況在之后應(yīng)該也會(huì)大幅度下降的。耐心細(xì)致只是一方面,找對(duì)學(xué)習(xí)的方法也很重要。知識(shí)點(diǎn)方面,多花點(diǎn)時(shí)間還是可以理解清楚的,但是在寫代碼,特別是自己實(shí)際操作解決問題時(shí),還是會(huì)遇到有許多的問題。比如在一道要求輸入名字的題目中,我在思考能不能通過函數(shù)來判斷名字是否輸入正確,但是當(dāng)我輸入函數(shù)后,發(fā)現(xiàn)得不到我需要的結(jié)果,通過查詢資料,反復(fù)修改實(shí)驗(yàn)多次也沒辦法。后來在上課的時(shí)候,我把自己寫的代碼請(qǐng)教老師,老師看了一會(huì)兒就指出了問題的根本:變量在最開始輸入夫人時(shí)候是沒有類型的,在運(yùn)行的時(shí)候才需要去確定數(shù)據(jù)的類型。此外,變量沒有固定類型,前一次賦值的時(shí)候?qū)?yīng)的類型就是下一次輸入時(shí)的類型。變量除了可以是固態(tài)的,也可以是動(dòng)態(tài)的,隨著輸入的變化而變化。另外,老師還提醒我我輸入的代碼中忽視了函數(shù)定義中沒有返回值的說明。如果沒有返回值的話,運(yùn)行代碼的時(shí)候會(huì)默認(rèn)返回,如果顯示了其他語句,則返回正確的值。經(jīng)過老師的查看,找出了問題的根本是我把變量定義錯(cuò)了,函數(shù)使用的也不對(duì),應(yīng)該用表示選擇的if語句。此外,老師還幫我把代碼優(yōu)化,刪除了不必要的字符串,讓代碼看起來思路更清楚,更明白。也是通過這次書寫代碼時(shí)所遇到的問題,讓我清楚明白了學(xué)習(xí)不是一蹴而就的,要腳踏實(shí)地,要多問問題,才能發(fā)現(xiàn)問題,解決問題。其實(shí)在之前的學(xué)習(xí)生活中,我也遇到了許多問題,但是因?yàn)樾愿竦榷喾矫嬖?,不愿意去尋求他人幫助,喜歡一個(gè)人獨(dú)自解決,但顯然這是不對(duì)的,因?yàn)檫@些堆積的問題久而久之沒有及時(shí)的得到解決,就變成我知識(shí)點(diǎn)的漏洞,只會(huì)讓我學(xué)到的東西變得越來越少,越來越片面。也是因?yàn)檫@次機(jī)會(huì),讓我敢于向老師尋求解決問題的辦法。其實(shí)踏出這一步之后,豁然開朗。不僅是這次寫錯(cuò)代碼能得到改正,也是幫助我養(yǎng)成問題的習(xí)慣。當(dāng)然這種尋求幫助應(yīng)當(dāng)是建立在自己努力修改嘗試后的,而不是一遇到問題就希望得到別人的幫助,這樣效果也是甚微的。三人行,必有我?guī)熝伞2粏枂栴},不會(huì)問問題,顯然是不對(duì)的,善學(xué),善問,才能促使我們不斷進(jìn)步。在之后的學(xué)習(xí)生活中,我也應(yīng)當(dāng)像這次一樣,在遇到實(shí)在解決不了的問題時(shí),敢于向朋友,老師尋求幫助,這也是讓我們一起共同進(jìn)步的好方法。學(xué)習(xí)的方法有很多,還有一點(diǎn)很重要的就是一定要做好筆記。好記性不如爛筆頭是我們從一開始接觸學(xué)習(xí)就知道的道理。特別是在這次學(xué)習(xí)過程中,做好筆

溫馨提示

  • 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)論