版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
成果形式:實(shí)踐報(bào)告成果名稱:關(guān)于Python網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)實(shí)踐報(bào)告關(guān)于python網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)一、實(shí)踐目的1、爬蟲原理與數(shù)據(jù)抓取,了解通用爬蟲和聚焦爬蟲,GET請求和POST請求,URLError與HTTPError和Requests模塊2、熟悉非結(jié)構(gòu)化數(shù)據(jù)與結(jié)構(gòu)化數(shù)據(jù)提取,正則表達(dá)式re模塊3、熟練掌握Scrapy實(shí)戰(zhàn)項(xiàng)目例如手機(jī)APP抓包爬蟲,陽光熱線問政平臺爬蟲,新浪網(wǎng)分類咨訊爬蟲,西安財(cái)經(jīng)大學(xué)教務(wù)系統(tǒng)爬蟲二、實(shí)踐內(nèi)容1、網(wǎng)絡(luò)爬蟲概述網(wǎng)絡(luò)爬蟲,英文名(Webcrawler),我們又稱之為網(wǎng)絡(luò)蜘蛛人(Webrobot)或者網(wǎng)絡(luò)機(jī)器人(Webrobot),當(dāng)然還有一些不常用的名字例如螞蟻、自動索引、模擬程序、蠕蟲等等一些。在一些社區(qū)中,還會把他們成為網(wǎng)頁追逐者,它是咱們平常說的“物聯(lián)網(wǎng)”核心之一。網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,就是在別人做好的網(wǎng)頁上爬取自己想要有用的東西,傳統(tǒng)的爬蟲是從一個或者很多個初始網(wǎng)頁開始,獲得初始網(wǎng)頁的URL,在抓取網(wǎng)頁的時候,不斷地從被抓取的網(wǎng)頁上抽取新的URL放入自己的隊(duì)列中,直到滿足系統(tǒng)的一定停止條件。更簡潔一點(diǎn)的描述就是分為三個步驟,第一步在網(wǎng)頁請求數(shù)據(jù),第二步下載數(shù)據(jù),第三步解析數(shù)據(jù),從而提取到目標(biāo)內(nèi)容。2、網(wǎng)絡(luò)爬蟲的基本流程
用戶獲取網(wǎng)絡(luò)數(shù)據(jù)的方式:方式1:瀏覽器提交請求>下載網(wǎng)頁代碼>解析成頁面方式2:模擬瀏覽器發(fā)送請求(獲取網(wǎng)頁代碼)->提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫或文件中爬蟲要做的就是方式2;(1)、發(fā)起請求使用http庫向目標(biāo)站點(diǎn)發(fā)起請求,即發(fā)送一個RequestRequest包含:請求頭、請求體等
Request模塊缺陷:不能執(zhí)行JS和CSS代碼(2)、獲取響應(yīng)內(nèi)容如果服務(wù)器能正常響應(yīng),則會得到一個ResponseResponse包含:html,json,圖片,視頻等(3)、解析內(nèi)容解析html數(shù)據(jù):正則表達(dá)式(RE模塊),第三方解析庫如Beautifulsoup,pyquery等解析json數(shù)據(jù):json模塊解析二進(jìn)制數(shù)據(jù):以wb的方式寫入文件(4)、保存數(shù)據(jù)數(shù)據(jù)庫(MySQL,Mongdb、Redis)request請求方式:常見的請求方式:GET/POST請求的URLrl編碼/s?wd=圖片圖片會被編碼(看示例代碼)網(wǎng)頁的加載過程是:在解析document文檔的時候,遇到鏈接,則針對超鏈接發(fā)起下載圖片的請求請求頭cookies:cookie用來保存登錄信息請求體
如果是get方式,請求體沒有內(nèi)容(get請求的請求體放在url后面參數(shù)中,直接能看到)
如果是post方式,請求體是formatdata
ps:
1、登錄窗口,文件上傳等,信息都會被附加到請求體內(nèi)
2、登錄時輸入錯誤的用戶名密碼然后提交內(nèi)容,就可以看到post,正確登錄后頁面一般會跳轉(zhuǎn),沒有辦法捕捉到post響應(yīng)Response響應(yīng)狀態(tài)碼200:代表成功301:代表跳轉(zhuǎn)404:文件不存在403:無權(quán)限訪問502:服務(wù)器錯誤
preview就是網(wǎng)頁源代碼JSO數(shù)據(jù)如網(wǎng)頁html,圖片二進(jìn)制數(shù)據(jù)等
3、爬蟲的實(shí)戰(zhàn)操作實(shí)例1:手機(jī)App抓包爬蟲(1)、items.pyname=scrapy.Field()#存儲照片的名字imagesUrls=scrapy.Field()#照片的url路徑imagesPath=scrapy.Field()#照片保存在本地的路徑(2)、spiders/douyu.pyimportscrapyimportjsonfromdouyuSpider.itemsimportDouyuspiderItemname="douyu"allowd_domains=[""]offset=0url="/api/v1/getVerticalRoom?limit=20&offset="start_urls=[url+str(offset)]#返回從json里獲取data段數(shù)據(jù)集合data=json.loads(response.text)["data"]foreachindata:item=DouyuspiderItem()item["name"]=each["nickname"]item["imagesUrls"]=each["vertical_src"]yielditemself.offset+=20yieldscrapy.Request(self.url+str(self.offset),callback=self.parse)(3)、設(shè)置setting.pyITEM_PIPELINES={'douyuSpider.pipelines.ImagesPipeline':1}#Images的存放位置,之后會在pipelines.py里調(diào)用#user-agentUSER_AGENT='DYZB/2.290(iPhone;iOS9.3.4;Scale/2.00)'(4)、pipelines.pyimportscrapyimportosfromscrapy.pipelines.imagesimportImagesPipelinefromjectimportget_project_settingsIMAGES_STORE=get_project_settings().get("IMAGES_STORE")image_url=item["imagesUrls"]yieldscrapy.Request(image_url)image_path=[x["path"]forok,xinresultsifok]os.rename(self.IMAGES_STORE+"/"+image_path[0],self.IMAGES_STORE+"/"+item["name"]+".jpg")item["imagesPath"]=self.IMAGES_STORE+"/"+item["name"]returnitem在項(xiàng)目根目錄下新建main.py文件,用于調(diào)試fromscrapyimportcmdlinecmdline.execute('scrapycrawldouyu'.split())執(zhí)行程序py2main.pyCopyright?BigCatallrightreserved,poweredbyGitbook「RevisionTime:2017-01-0317:44:55」圖SEQ圖\*ARABIC1實(shí)例2:用戶登陸(三次機(jī)會重試)圖2username=input("請輸入用戶名:")
password=input("請輸入密碼:")
ifusername=="西安財(cái)經(jīng)"andpassword=="1100":
print("登錄成功")
else:
print("登錄失敗")實(shí)例3:在下列數(shù)組值li=[1,2,3,22,4]最后追加元素5,“caijing”,[1100,0011]三個元素,打印輸出當(dāng)前數(shù)組。圖3li=[1,2,3,22,4]
li.append(5)
li.append("caijing")
li.append("[1100,0011]")
print(li)三、實(shí)踐過程對于數(shù)學(xué)專業(yè)的同學(xué)來說,其實(shí)像這種python,java這類具有方向性專業(yè)性的課程還是很有必要學(xué)的,這可能就是學(xué)校為我們專門開設(shè)這項(xiàng)課程的原因吧,數(shù)學(xué)和計(jì)算機(jī)的聯(lián)系比我們想象中的聯(lián)系還要大,我們大三分流就能看出來,一個是數(shù)學(xué)與應(yīng)用數(shù)學(xué),另一個是信息與計(jì)算科學(xué)。我選的是數(shù)學(xué)與應(yīng)用數(shù)學(xué),所以關(guān)系好像并不是很大,但是面對這樣新奇的事物,難免還是有點(diǎn)好奇心的,所以我就開始了第一次的爬蟲課程學(xué)習(xí)。我們班是由圖論軟件公司的老師為我們授課的,他們公司是專門為大學(xué)生就業(yè)進(jìn)行專項(xiàng)培訓(xùn)的公司。但是因?yàn)榘嗉壚锶藬?shù)太多,因?yàn)槲覀兪呛脦讉€班合起來上課的,還有一部分同學(xué)選了甲骨文,數(shù)學(xué)建模的方向不同,所以每個項(xiàng)目人數(shù)都很多,老師也就不好管理大家了,畢竟是暑假好多院都回家了,我們的心也就有點(diǎn)不在這了,但是老師還是很認(rèn)真負(fù)責(zé),每天按時簽到簽退,我們辛苦,他們比我們還辛苦。第一天,我們趕10點(diǎn)到了一教,發(fā)現(xiàn)整棟樓只有我們教室在上課,那種凄涼,但是面對大家對知識熱情似火的心,我似乎也被點(diǎn)燃了,一上課老師就提醒我們上課時的各種規(guī)矩,無規(guī)矩不成方圓嘛。然后讓我們必須人手一臺電腦,但是好多人都沒有帶電腦,所以就從下節(jié)課開始再教,這節(jié)課就讓我們先簡單了解一下網(wǎng)絡(luò)爬蟲,老師用ppt向我們展示了python語言的原理和應(yīng)用,這和我們之前上計(jì)算機(jī)課學(xué)的內(nèi)容還有一些相似之處,但是原理還是不一樣的,要是真正學(xué)起來感覺難度也挺大的,不過老師給了我們很大的自信,他說只要用心學(xué)就沒有學(xué)不會的,我也堅(jiān)信這句話。然后他給我們講了好多學(xué)習(xí)python的學(xué)長學(xué)姐的事例,基本上都是年薪20萬的樣子,聽起來還是挺誘人的呢,不過我還是沒有興趣,因?yàn)榈玫皆蕉喔冻龅木鸵蕉嗦?,還有老師也給我們展示了python在人工智能方面的應(yīng)用,例如阿爾法狗三比零戰(zhàn)勝中國圍棋第一人柯潔,還有好多好多,看到這些讓我不禁感嘆科技的進(jìn)步,我們以后要做的還有很多,為科技進(jìn)步作出貢獻(xiàn)!第二天,我們?nèi)豪锿ㄖ它c(diǎn)到教室,比昨天提早了兩個小時,這讓我心情很不爽,一教也是很遠(yuǎn),但是生活所迫,還是得去,提著重重的電腦,背著大大的書包,今天我們上課要先下載一個軟件anaconda3,老師給我們發(fā)了壓縮包和下載需要用的文件,不過教室網(wǎng)速很慢而且那個安裝還有好多很復(fù)雜的流程,我就不斷的問旁邊會的同學(xué)還有老師,最后耗費(fèi)兩個小時后終于下載完成了,老師在我們都下載完成后開始講課,它講述了怎樣進(jìn)入這個軟件,還有這個軟件的各種功能,我們跟著老師一步一步的學(xué)習(xí),算是成功的入門了吧。后來老師給我們教了數(shù)組,這是最基礎(chǔ)的,首先我們要在軟件上創(chuàng)建數(shù)組,然后學(xué)習(xí)數(shù)組的查詢類型,長度,雖然這些很簡單,但是我還是有些不懂,看老師做的很容易,其實(shí)到自己做的時候就有很多的問題,我在旁邊同學(xué)的幫助下學(xué)會了這些簡單的操作,接下來就是更有難度的操作了,要給數(shù)組進(jìn)行倒序輸出,這個就是輸入老師發(fā)下來的程序,再復(fù)制粘貼就好了,就能看到很神奇的數(shù)組倒序,我記得之前我們上計(jì)算機(jī)課也學(xué)過這樣的操作,這節(jié)課的內(nèi)容就這么多了,老師給我們還布置了作業(yè),讓我們敢下午五點(diǎn)發(fā)給學(xué)習(xí)委員,但是我在還沒有下課的時候就完成了,超級有成就感。在第三天的時候,我已經(jīng)習(xí)慣了這種上課模式,我們學(xué)習(xí)的內(nèi)容也變得越來越難越來越深,這節(jié)課老師給我們教了一些算法,有for循環(huán),while循環(huán),if等等這種算法可以算好多好多數(shù)學(xué)題,這就解開了我多年對計(jì)算機(jī)解題的迷惑,老師在講臺上給我們演示了好多遍,并且給我們解釋這些原理都是什么,我聽的很認(rèn)真,這節(jié)課讓我真真切切的感受到網(wǎng)絡(luò)python爬蟲的魅力,后來老師讓我們自己練習(xí),我又遇到了好多難題,有一個是算1到100多的加法,可是我怎么也算不出來,然后我問了老師,他說我空格沒敲對,我之前一直以為只要把代碼敲對就行了,看來我太年輕了,然后做后面那些題的時候我都注意這個問題,從那以后我每次做程序都特別細(xì)心生怕有什么小細(xì)節(jié)有問題,這也讓我在以后的學(xué)習(xí)生活中學(xué)會了細(xì)心。也說明了計(jì)算機(jī)的嚴(yán)謹(jǐn)性。這節(jié)課老師也像往常一樣布置了作業(yè),我在和舍友的互相扶持下,我們倆還是趕在下課前完成了老師布置的作業(yè),之后在空閑時間我們也幫助了好多同學(xué)為他們解決了一些小問題。之后幾天才是真正的爬蟲,老師先給我們介紹了python的庫,這個是為了讓我們打好基礎(chǔ),其實(shí)老師說的我基本上都沒有怎么聽懂,專業(yè)術(shù)語很多所以很多東西在短時間內(nèi)不好理解,我們也就需要做到略知一二就好了,老師講完這些知識后,就給我們演示了一遍數(shù)據(jù)的爬取,老師爬的是我們學(xué)校的教務(wù)系統(tǒng),當(dāng)然這對我們學(xué)校的系統(tǒng)沒有什么影響。老師先一個代碼一個代碼的敲,我都很好奇老師是怎么記住這些的,然后再把他們都復(fù)制到一個記事本上,再從網(wǎng)頁打開就好了,看起來簡單的操作,我想設(shè)計(jì)這個程序的人應(yīng)該付出了很大的努力吧,看完老師的演示后,我們就開始自己做了,還是像往常一樣老師給我們發(fā)代碼,我們復(fù)制粘貼,出來的內(nèi)容和老師一樣,雖然很沒有這樣的操作很沒有技術(shù)含量,但是當(dāng)自己做出來的那一刻,還是無比興奮。我們的課也差不多上完了,雖然時間很短,但是能感受到python的魅力很大,它為我們的科技進(jìn)步作出了巨大貢獻(xiàn),而我們學(xué)習(xí)的僅僅是python的九牛一毛,我相信還有很多人在為研究這些付出努力,作為大學(xué)生的我們以后也會學(xué)習(xí)更多有關(guān)網(wǎng)絡(luò)爬蟲的知識。四、實(shí)踐體會經(jīng)過這幾天python爬蟲課程的學(xué)習(xí),我見識到了很多之前沒有接觸過的東西,感嘆計(jì)算機(jī)發(fā)展的迅速和科技進(jìn)步的迅速。許多工作用計(jì)算機(jī)完成也省去了大量的人力物力,提高了經(jīng)濟(jì)水平。而且在現(xiàn)在如此嚴(yán)峻的就業(yè)形勢下,我們向爬蟲這方面發(fā)展也是一個很好的選擇,尤其對于男生來說,這會是很好的就業(yè)方向,而且也會很有前途??傮w來說,網(wǎng)絡(luò)爬蟲對我們生活的影響還是挺大的,因?yàn)楝F(xiàn)在很多的軟件,網(wǎng)頁制作都離不開爬蟲,所以計(jì)算機(jī)人才不妄是高端人才,雖然可能在我們現(xiàn)實(shí)生活中可能接觸不到這些,但是這些帶給我們的影響都是潛移默化的,是我們科技發(fā)展的必然結(jié)果。我們已經(jīng)步入大三了,接下來面對的就是就業(yè)或者考研的選擇,我們python老師也給我們分析了python的專業(yè)優(yōu)勢,例如就業(yè)競爭度低,可以說是python人才是供不應(yīng)求的,壓力相對于其他專業(yè)來說就小了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《汽車消費(fèi)需求特征》課件
- 《天加風(fēng)機(jī)盤管介紹》課件
- 戲水安全課件
- 贛州師范高等??茖W(xué)?!稊?shù)量分析方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛東學(xué)院《修辭學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 課件活動安全記錄表
- 三年級科學(xué)下冊第一單元土壤與生命第3課肥沃的土壤教案蘇教版
- 九年級化學(xué)上冊第五章燃料5.3二氧化碳的性質(zhì)和制法說課稿新版粵教版
- 小學(xué)生宿舍用電管理制度
- 科技安全課件
- 林業(yè)標(biāo)準(zhǔn)林業(yè)調(diào)查規(guī)劃設(shè)計(jì)收費(fèi)依據(jù)及標(biāo)準(zhǔn)
- 山東昌樂二中的“271高效課堂”
- 人教版高中物理新舊教材知識對比
- 國際結(jié)算期末復(fù)習(xí)試卷5套及參考答案
- 六年級上冊數(shù)學(xué)圓中方方中圓經(jīng)典題練習(xí)
- 現(xiàn)場組織機(jī)構(gòu)框圖及說明
- 《城鎮(zhèn)燃?xì)夤芾項(xiàng)l例》解讀
- 七年級數(shù)學(xué)幾何證明題(典型)
- X62W萬能銑床電氣原理圖解析(共18頁)
- 小康煤礦水文地質(zhì)類型劃分報(bào)告
- (完整版)中央空調(diào)現(xiàn)場勘察信息表
評論
0/150
提交評論