關(guān)于Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)實(shí)踐報(bào)告研究_第1頁(yè)
關(guān)于Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)實(shí)踐報(bào)告研究_第2頁(yè)
關(guān)于Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)實(shí)踐報(bào)告研究_第3頁(yè)
關(guān)于Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)實(shí)踐報(bào)告研究_第4頁(yè)
關(guān)于Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)實(shí)踐報(bào)告研究_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

成果形式:實(shí)踐報(bào)告成果名稱(chēng):關(guān)于Python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)實(shí)踐報(bào)告關(guān)于python網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)一、實(shí)踐目的1、爬蟲(chóng)原理與數(shù)據(jù)抓取,了解通用爬蟲(chóng)和聚焦爬蟲(chóng),GET請(qǐng)求和POST請(qǐng)求,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抓包爬蟲(chóng),陽(yáng)光熱線(xiàn)問(wèn)政平臺(tái)爬蟲(chóng),新浪網(wǎng)分類(lèi)咨訊爬蟲(chóng),西安財(cái)經(jīng)大學(xué)教務(wù)系統(tǒng)爬蟲(chóng)二、實(shí)踐內(nèi)容1、網(wǎng)絡(luò)爬蟲(chóng)概述網(wǎng)絡(luò)爬蟲(chóng),英文名(Webcrawler),我們又稱(chēng)之為網(wǎng)絡(luò)蜘蛛人(Webrobot)或者網(wǎng)絡(luò)機(jī)器人(Webrobot),當(dāng)然還有一些不常用的名字例如螞蟻、自動(dòng)索引、模擬程序、蠕蟲(chóng)等等一些。在一些社區(qū)中,還會(huì)把他們成為網(wǎng)頁(yè)追逐者,它是咱們平常說(shuō)的“物聯(lián)網(wǎng)”核心之一。網(wǎng)絡(luò)爬蟲(chóng)是一個(gè)自動(dòng)提取網(wǎng)頁(yè)的程序,就是在別人做好的網(wǎng)頁(yè)上爬取自己想要有用的東西,傳統(tǒng)的爬蟲(chóng)是從一個(gè)或者很多個(gè)初始網(wǎng)頁(yè)開(kāi)始,獲得初始網(wǎng)頁(yè)的URL,在抓取網(wǎng)頁(yè)的時(shí)候,不斷地從被抓取的網(wǎng)頁(yè)上抽取新的URL放入自己的隊(duì)列中,直到滿(mǎn)足系統(tǒng)的一定停止條件。更簡(jiǎn)潔一點(diǎn)的描述就是分為三個(gè)步驟,第一步在網(wǎng)頁(yè)請(qǐng)求數(shù)據(jù),第二步下載數(shù)據(jù),第三步解析數(shù)據(jù),從而提取到目標(biāo)內(nèi)容。2、網(wǎng)絡(luò)爬蟲(chóng)的基本流程

用戶(hù)獲取網(wǎng)絡(luò)數(shù)據(jù)的方式:方式1:瀏覽器提交請(qǐng)求>下載網(wǎng)頁(yè)代碼>解析成頁(yè)面方式2:模擬瀏覽器發(fā)送請(qǐng)求(獲取網(wǎng)頁(yè)代碼)->提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫(kù)或文件中爬蟲(chóng)要做的就是方式2;(1)、發(fā)起請(qǐng)求使用http庫(kù)向目標(biāo)站點(diǎn)發(fā)起請(qǐng)求,即發(fā)送一個(gè)RequestRequest包含:請(qǐng)求頭、請(qǐng)求體等

Request模塊缺陷:不能執(zhí)行JS和CSS代碼(2)、獲取響應(yīng)內(nèi)容如果服務(wù)器能正常響應(yīng),則會(huì)得到一個(gè)ResponseResponse包含:html,json,圖片,視頻等(3)、解析內(nèi)容解析html數(shù)據(jù):正則表達(dá)式(RE模塊),第三方解析庫(kù)如Beautifulsoup,pyquery等解析json數(shù)據(jù):json模塊解析二進(jìn)制數(shù)據(jù):以wb的方式寫(xiě)入文件(4)、保存數(shù)據(jù)數(shù)據(jù)庫(kù)(MySQL,Mongdb、Redis)request請(qǐng)求方式:常見(jiàn)的請(qǐng)求方式:GET/POST請(qǐng)求的URLrl編碼/s?wd=圖片圖片會(huì)被編碼(看示例代碼)網(wǎng)頁(yè)的加載過(guò)程是:在解析document文檔的時(shí)候,遇到鏈接,則針對(duì)超鏈接發(fā)起下載圖片的請(qǐng)求請(qǐng)求頭cookies:cookie用來(lái)保存登錄信息請(qǐng)求體

如果是get方式,請(qǐng)求體沒(méi)有內(nèi)容(get請(qǐng)求的請(qǐng)求體放在url后面參數(shù)中,直接能看到)

如果是post方式,請(qǐng)求體是formatdata

ps:

1、登錄窗口,文件上傳等,信息都會(huì)被附加到請(qǐng)求體內(nèi)

2、登錄時(shí)輸入錯(cuò)誤的用戶(hù)名密碼然后提交內(nèi)容,就可以看到post,正確登錄后頁(yè)面一般會(huì)跳轉(zhuǎn),沒(méi)有辦法捕捉到post響應(yīng)Response響應(yīng)狀態(tài)碼200:代表成功301:代表跳轉(zhuǎn)404:文件不存在403:無(wú)權(quán)限訪(fǎng)問(wèn)502:服務(wù)器錯(cuò)誤

preview就是網(wǎng)頁(yè)源代碼JSO數(shù)據(jù)如網(wǎng)頁(yè)html,圖片二進(jìn)制數(shù)據(jù)等

3、爬蟲(chóng)的實(shí)戰(zhàn)操作實(shí)例1:手機(jī)App抓包爬蟲(chóng)(1)、items.pyname=scrapy.Field()#存儲(chǔ)照片的名字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的存放位置,之后會(huì)在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:用戶(hù)登陸(三次機(jī)會(huì)重試)圖2username=input("請(qǐng)輸入用戶(hù)名:")

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

ifusername=="西安財(cái)經(jīng)"andpassword=="1100":

print("登錄成功")

else:

print("登錄失敗")實(shí)例3:在下列數(shù)組值li=[1,2,3,22,4]最后追加元素5,“caijing”,[1100,0011]三個(gè)元素,打印輸出當(dāng)前數(shù)組。圖3li=[1,2,3,22,4]

li.append(5)

li.append("caijing")

li.append("[1100,0011]")

print(li)三、實(shí)踐過(guò)程對(duì)于數(shù)學(xué)專(zhuān)業(yè)的同學(xué)來(lái)說(shuō),其實(shí)像這種python,java這類(lèi)具有方向性專(zhuān)業(yè)性的課程還是很有必要學(xué)的,這可能就是學(xué)校為我們專(zhuān)門(mén)開(kāi)設(shè)這項(xiàng)課程的原因吧,數(shù)學(xué)和計(jì)算機(jī)的聯(lián)系比我們想象中的聯(lián)系還要大,我們大三分流就能看出來(lái),一個(gè)是數(shù)學(xué)與應(yīng)用數(shù)學(xué),另一個(gè)是信息與計(jì)算科學(xué)。我選的是數(shù)學(xué)與應(yīng)用數(shù)學(xué),所以關(guān)系好像并不是很大,但是面對(duì)這樣新奇的事物,難免還是有點(diǎn)好奇心的,所以我就開(kāi)始了第一次的爬蟲(chóng)課程學(xué)習(xí)。我們班是由圖論軟件公司的老師為我們授課的,他們公司是專(zhuān)門(mén)為大學(xué)生就業(yè)進(jìn)行專(zhuān)項(xiàng)培訓(xùn)的公司。但是因?yàn)榘嗉?jí)里人數(shù)太多,因?yàn)槲覀兪呛脦讉€(gè)班合起來(lái)上課的,還有一部分同學(xué)選了甲骨文,數(shù)學(xué)建模的方向不同,所以每個(gè)項(xiàng)目人數(shù)都很多,老師也就不好管理大家了,畢竟是暑假好多院都回家了,我們的心也就有點(diǎn)不在這了,但是老師還是很認(rèn)真負(fù)責(zé),每天按時(shí)簽到簽退,我們辛苦,他們比我們還辛苦。第一天,我們趕10點(diǎn)到了一教,發(fā)現(xiàn)整棟樓只有我們教室在上課,那種凄涼,但是面對(duì)大家對(duì)知識(shí)熱情似火的心,我似乎也被點(diǎn)燃了,一上課老師就提醒我們上課時(shí)的各種規(guī)矩,無(wú)規(guī)矩不成方圓嘛。然后讓我們必須人手一臺(tái)電腦,但是好多人都沒(méi)有帶電腦,所以就從下節(jié)課開(kāi)始再教,這節(jié)課就讓我們先簡(jiǎn)單了解一下網(wǎng)絡(luò)爬蟲(chóng),老師用ppt向我們展示了python語(yǔ)言的原理和應(yīng)用,這和我們之前上計(jì)算機(jī)課學(xué)的內(nèi)容還有一些相似之處,但是原理還是不一樣的,要是真正學(xué)起來(lái)感覺(jué)難度也挺大的,不過(guò)老師給了我們很大的自信,他說(shuō)只要用心學(xué)就沒(méi)有學(xué)不會(huì)的,我也堅(jiān)信這句話(huà)。然后他給我們講了好多學(xué)習(xí)python的學(xué)長(zhǎng)學(xué)姐的事例,基本上都是年薪20萬(wàn)的樣子,聽(tīng)起來(lái)還是挺誘人的呢,不過(guò)我還是沒(méi)有興趣,因?yàn)榈玫皆蕉喔冻龅木鸵蕉嗦铮€有老師也給我們展示了python在人工智能方面的應(yīng)用,例如阿爾法狗三比零戰(zhàn)勝中國(guó)圍棋第一人柯潔,還有好多好多,看到這些讓我不禁感嘆科技的進(jìn)步,我們以后要做的還有很多,為科技進(jìn)步作出貢獻(xiàn)!第二天,我們?nèi)豪锿ㄖ它c(diǎn)到教室,比昨天提早了兩個(gè)小時(shí),這讓我心情很不爽,一教也是很遠(yuǎn),但是生活所迫,還是得去,提著重重的電腦,背著大大的書(shū)包,今天我們上課要先下載一個(gè)軟件anaconda3,老師給我們發(fā)了壓縮包和下載需要用的文件,不過(guò)教室網(wǎng)速很慢而且那個(gè)安裝還有好多很復(fù)雜的流程,我就不斷的問(wèn)旁邊會(huì)的同學(xué)還有老師,最后耗費(fèi)兩個(gè)小時(shí)后終于下載完成了,老師在我們都下載完成后開(kāi)始講課,它講述了怎樣進(jìn)入這個(gè)軟件,還有這個(gè)軟件的各種功能,我們跟著老師一步一步的學(xué)習(xí),算是成功的入門(mén)了吧。后來(lái)老師給我們教了數(shù)組,這是最基礎(chǔ)的,首先我們要在軟件上創(chuàng)建數(shù)組,然后學(xué)習(xí)數(shù)組的查詢(xún)類(lèi)型,長(zhǎng)度,雖然這些很簡(jiǎn)單,但是我還是有些不懂,看老師做的很容易,其實(shí)到自己做的時(shí)候就有很多的問(wèn)題,我在旁邊同學(xué)的幫助下學(xué)會(huì)了這些簡(jiǎn)單的操作,接下來(lái)就是更有難度的操作了,要給數(shù)組進(jìn)行倒序輸出,這個(gè)就是輸入老師發(fā)下來(lái)的程序,再?gòu)?fù)制粘貼就好了,就能看到很神奇的數(shù)組倒序,我記得之前我們上計(jì)算機(jī)課也學(xué)過(guò)這樣的操作,這節(jié)課的內(nèi)容就這么多了,老師給我們還布置了作業(yè),讓我們敢下午五點(diǎn)發(fā)給學(xué)習(xí)委員,但是我在還沒(méi)有下課的時(shí)候就完成了,超級(jí)有成就感。在第三天的時(shí)候,我已經(jīng)習(xí)慣了這種上課模式,我們學(xué)習(xí)的內(nèi)容也變得越來(lái)越難越來(lái)越深,這節(jié)課老師給我們教了一些算法,有for循環(huán),while循環(huán),if等等這種算法可以算好多好多數(shù)學(xué)題,這就解開(kāi)了我多年對(duì)計(jì)算機(jī)解題的迷惑,老師在講臺(tái)上給我們演示了好多遍,并且給我們解釋這些原理都是什么,我聽(tīng)的很認(rèn)真,這節(jié)課讓我真真切切的感受到網(wǎng)絡(luò)python爬蟲(chóng)的魅力,后來(lái)老師讓我們自己練習(xí),我又遇到了好多難題,有一個(gè)是算1到100多的加法,可是我怎么也算不出來(lái),然后我問(wèn)了老師,他說(shuō)我空格沒(méi)敲對(duì),我之前一直以為只要把代碼敲對(duì)就行了,看來(lái)我太年輕了,然后做后面那些題的時(shí)候我都注意這個(gè)問(wèn)題,從那以后我每次做程序都特別細(xì)心生怕有什么小細(xì)節(jié)有問(wèn)題,這也讓我在以后的學(xué)習(xí)生活中學(xué)會(huì)了細(xì)心。也說(shuō)明了計(jì)算機(jī)的嚴(yán)謹(jǐn)性。這節(jié)課老師也像往常一樣布置了作業(yè),我在和舍友的互相扶持下,我們倆還是趕在下課前完成了老師布置的作業(yè),之后在空閑時(shí)間我們也幫助了好多同學(xué)為他們解決了一些小問(wèn)題。之后幾天才是真正的爬蟲(chóng),老師先給我們介紹了python的庫(kù),這個(gè)是為了讓我們打好基礎(chǔ),其實(shí)老師說(shuō)的我基本上都沒(méi)有怎么聽(tīng)懂,專(zhuān)業(yè)術(shù)語(yǔ)很多所以很多東西在短時(shí)間內(nèi)不好理解,我們也就需要做到略知一二就好了,老師講完這些知識(shí)后,就給我們演示了一遍數(shù)據(jù)的爬取,老師爬的是我們學(xué)校的教務(wù)系統(tǒng),當(dāng)然這對(duì)我們學(xué)校的系統(tǒng)沒(méi)有什么影響。老師先一個(gè)代碼一個(gè)代碼的敲,我都很好奇老師是怎么記住這些的,然后再把他們都復(fù)制到一個(gè)記事本上,再?gòu)木W(wǎng)頁(yè)打開(kāi)就好了,看起來(lái)簡(jiǎn)單的操作,我想設(shè)計(jì)這個(gè)程序的人應(yīng)該付出了很大的努力吧,看完老師的演示后,我們就開(kāi)始自己做了,還是像往常一樣老師給我們發(fā)代碼,我們復(fù)制粘貼,出來(lái)的內(nèi)容和老師一樣,雖然很沒(méi)有這樣的操作很沒(méi)有技術(shù)含量,但是當(dāng)自己做出來(lái)的那一刻,還是無(wú)比興奮。我們的課也差不多上完了,雖然時(shí)間很短,但是能感受到python的魅力很大,它為我們的科技進(jìn)步作出了巨大貢獻(xiàn),而我們學(xué)習(xí)的僅僅是python的九牛一毛,我相信還有很多人在為研究這些付出努力,作為大學(xué)生的我們以后也會(huì)學(xué)習(xí)更多有關(guān)網(wǎng)絡(luò)爬蟲(chóng)的知識(shí)。四、實(shí)踐體會(huì)經(jīng)過(guò)這幾天python爬蟲(chóng)課程的學(xué)習(xí),我見(jiàn)識(shí)到了很多之前沒(méi)有接觸過(guò)的東西,感嘆計(jì)算機(jī)發(fā)展的迅速和科技進(jìn)步的迅速。許多工作用計(jì)算機(jī)完成也省去了大量的人力物力,提高了經(jīng)濟(jì)水平。而且在現(xiàn)在如此嚴(yán)峻的就業(yè)形勢(shì)下,我們向爬蟲(chóng)這方面發(fā)展也是一個(gè)很好的選擇,尤其對(duì)于男生來(lái)說(shuō),這會(huì)是很好的就業(yè)方向,而且也會(huì)很有前途。總體來(lái)說(shuō),網(wǎng)絡(luò)爬蟲(chóng)對(duì)我們生活的影響還是挺大的,因?yàn)楝F(xiàn)在很多的軟件,網(wǎng)頁(yè)制作都離不開(kāi)爬蟲(chóng),所以計(jì)算機(jī)人才不妄是高端人才,雖然可能在我們現(xiàn)實(shí)生活中可能接觸不到這些,但是這些帶給我們的影響都是潛移默化的,是我們科技發(fā)展的必然結(jié)果。我們已經(jīng)步入大三了,接下來(lái)面對(duì)的就是就業(yè)或者考研的選擇,我們python老師也給我們分析了python的專(zhuān)業(yè)優(yōu)勢(shì),例如就業(yè)競(jìng)爭(zhēng)度低,可以說(shuō)是python人才是供不應(yīng)求的,壓力相對(duì)于其他專(zhuān)業(yè)來(lái)說(shuō)就小了

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論