爬蟲豆瓣電影_第1頁
爬蟲豆瓣電影_第2頁
爬蟲豆瓣電影_第3頁
爬蟲豆瓣電影_第4頁
爬蟲豆瓣電影_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

爬蟲豆瓣電影一、實踐目的1.學習新的知識,從不同的角度認識計算機領域,從多方面挖掘自己對計算機的興趣所在。(1)學習python基礎,重新學習一門新的計算機語言。在學習的過程中,了解更多需要使用的庫以及各自的作用,并掌握和理解正則表達式,以更好的進行爬蟲工作。學習python語言的基本語法,更深一層的理解和掌握計算機語言。(2)學習HTML基礎,web前端開發。HTML一門新的標記語言,用于學習網頁制作,包括網頁中內容、圖片、連接、音樂、動畫等元素的呈現。培養了學習計算機的興趣與激情。2.培養自身的動手操作能力、實踐能力,增強自身的邏輯思維。在課堂上,努力跟上老師的步伐,接受老師所講解的知識點,然后完成老師所給的每個知識點的課后小練習,在達到理解老師所講內容的同時,增強自身的邏輯思維。3.提高自主學習的能力,調整正確的學習態度,培養良好的學習習慣。跟著老師上完每天的課程后,能夠自主完成老師所布置的課后作業,學會自主修改錯誤和漏洞,修改不出來的錯誤可以詢問同學或老師,或者在第二天上課認真聽講老師對前一天作業的講解,盡量做到認真完成每天作業,以培養良好的學習習慣,端正自己的學習態度。二、實踐內容1.學習python語言。(1)數據類型:數值類型:分為整數和小數。整數包括正整數、負整數、0,并且它的位數是任意的。浮點數由整數部分和小數部分組成,主要用于處理包括小數的數。字符串類型:字符串就是連續的字符序列,可以是計算機所能表示的一切字符集合。布爾類型:布爾類型主要用來表示真或者假的值。標識符True和False被解釋為布爾值。布爾值可以轉化為數值,其中True表示1,而False表示0。(2)運算符:算術運算符、賦值運算符、比較運算符、邏輯運算符和位運算符。(3)流程控制:①順序結構:順序執行,表示逐行執行相應的語句,不涉及任何的關鍵字。②分支結構:分支控制,需要按照判斷條件動態的去執行符合條件的語句。包括if選擇結構、if-else選擇結構、嵌套if選擇結構、if-elif-else選擇結構。③循環結構:循環控制,需要按照循環判斷條件動態的去執行循環語句,是使程序中的語句或者代碼塊得以重復執行的結構。包括while循環和for循環。(4)序列,是一塊用于存放多個值的連續的內存空間并且按一定順序排列。Python中序列結構主要有列表、元組、集合、字典和字符串。①列表(list):是由一系列有序排列的元素組成的,內置可變序列。形式上使用[]表示一個序列,每個元素中間使用逗號分割。內容可以是整數、實數、字符串、列表、元組等任何類型的內容放在列表中,同一個列表中可以有不同的類型的元素。創建列表:listname=[element,element2,……]創建空列表:list1=[]創建數值列表:list(data)刪除列表:dellistname遍歷列表:A.直接使用for循環:foriteminlistname:#輸出;B.使用for循環和enumerate()函數可以實現同時輸出索引值和元素內容的功能:forindex,iteminenumerate(list):#輸出index和item添加元素:A.通過+來拼接一個列表。B.通過appen(item)方法向該列表的末尾再添加一個元素。C.通過insert(index,item)來指定需要在特定的索引位置上添加一個元素。D.通過entend(list)將一個列表全部追加到另一個列表中。刪除元素:A.根據索引刪除:dellist[index];B.根據元素值進行刪除:list.remove(item)檢查某個元素是否是序列的成員:使用in關鍵字檢查某個元素是否是序列的成員,即檢查某個元素是否包含在該序列中。語法:valueinlist生成指定范圍的數值列表:list=[Expressionforvarinrange]根據列表生成指定需求的列表:newlist=[Expressionforvarinlist]從列表中選擇符合條件的元素組成新的列表:newlist=[Expressionforvarinlistifcondition]②元組(tuple):是由一系列有序的元素組成,但是它是不可變序列,因此元組成為不可變的列表。形式上用()表示,每個元素用逗號隔開。元素的內容可以是整數、實數、字符串、列表、元組等任何內容的放入到元組中,并且在同一個元組中,元素的類型可以不同。通常情況下,元素用于保存程序中不可修改的內容。使用賦值運算符之間創建元組:tuplename=(element1,element2,element3,……)創建空元組:emptytuple=()刪除元組:deltuplename③字符串:是連續的字符序列,可以是計算機所能表示的一切字符集合。字符串屬于不可變序列。計算字符串的長度:在實際開發中使用encode()函數來進行編碼后再進行計算長度。截取字符串:由于字符串也屬于序列,所以截取字符串可以采用切片方法實現。分割字符串:字符串對象的split()方法可以實現字符串分割。str.split(sep,maxsplit)檢索字符串:A.count()方法:str.count(sub[,start[,end]]).B.find()方法:str.find(sub[,start[,end]]).C.index()方法:str.index(sub[,start[,end]]).D.startswith()方法:str.startswith(prefix[,start[,end]]).F.endswith()方法:str.endswith(suffix[,start[,end]]).字母的大小寫轉換:A.lower()方法:str.lower()用于將字符串中的大寫字母轉換為小寫字母,得到一個新字符串。B.upper()方法:str.upper()用于將字符串的小寫字母轉換為大寫字母,得到一個新字符串。格式化字符串:‘%[-][+][0][m][.n]格式化字符串’%exp④字典(dict):字典的創建:A.dictionary={‘key1’:’value’,‘key2’:‘value2’,...,‘keyn’:‘valuen’}.B.通過給定的“鍵值對”創建字典:dictionary=dict(key1=value1,key2=value2,……,keyn=valuen).C.使用dict對象的fromkeys()方法創建值為空的字典:dictionary=dict.fromkeys(list1).D.通過已經存在的元組和列表創建字典:dictionary={name_tuple:sign}.刪除字典:deldictionary清空字典:dictionary.clear()字典的訪問:dictionary.get(key,[default])遍歷字典:dictionary.items()添加:dictionary[key]=value⑤集合(set):用于保存不重復的元素,是無序可變序列,集合的所有元素都放在一對大括號中,兩個相鄰元素所使用逗號分割。創建集合:A.直接使用{}創建:setname={element1,element2,……,elementn}.B.使用set()內置函數創建:setname=set(iteration).添加:向集合中添加元素使用add()方法來實現:setname.add(element)刪除:A.使用del刪除整個集合:delmr.B.使用remove()刪除指定的元素;C.使用pop()移除一個元素;D.使用clear()清空集合。集合的交集、并集和差集運算:分別使用符號&、|、-符號。(5)函數:即通過將一段有規律的,重復的代碼定義為函數,來達到一次編寫多次調用的目的。使用def關鍵字來實現。參數傳遞:形參、實參、值傳遞、引用傳遞。位置參數:也是必備參數,必須按照正確的順序傳到函數中。即調用時的數量和位置必須和定義時是一樣的,少參數和錯誤的位置都會使程序出錯。關鍵字參數:是指使用形參的名字來確定輸入的參數值。通過該方式制定實參時,不再需要與形參的位置完全一致,只要將參數名寫正確即可。為參數設置默認值:調用函數時,如果沒有指定某個參數將拋出異常,即在定義函數時,直接指定形式參數的默認值,當沒有傳入參數時則直接使用定義函數時,設置的默認值。語法:deffunctionname(,[parameter1=defalutvalue1]):[functionbody]可變參數:也是不定長參數,即傳入函數中的時間參數可以是0個,1個,2個到任意個。返回值:可以在函數體內使用return語句為函數指定返回值,該返回值可以是任意類型,并且無論return語句出現在函數的什么位置,只要得到執行,就會直接結束函數的執行。語法:return[value]匿名函數:是沒有名字的函數,使用lambda關鍵字定義,該關鍵字表明定義了一個匿名函數。語法:lambdaarg1,arg2,……:expression(6)文件操作。打開文件:使用open():open(file,mode=’r’,buffering=-1,encoding=None,errors=None,newline=None,closed=True,opener=None)(7)file對象:file對象使用open函數來創建,下面是file對象常用的函數。(8)os模塊提供了非常豐富的方法用來處理文件和目錄。2.爬蟲工具安裝。(1)urllib庫urllib是python內置的http請求庫,其中包括urllib.request請求模塊、urllib.error異常處理模塊、urllib.parseurl解析模塊、urllib.robotparserrobots.txt解析模塊。(2)re庫(3)requests庫Requests庫需要通過pip這個python工具來安裝外部庫。(4)selenium庫和chromedriver工具和phantomjs工具Selenium庫是用于驅動瀏覽器的庫,主要做自動化測試,如果爬取的網站是用js渲染的就沒有辦法用requests庫正常爬取,selenium庫就會驅動瀏覽器用瀏覽器將js渲染之后的結果拿到。(5)lxml庫(6)beautifulsoup庫(7)pyquery庫語法跟jquery語法是一樣的。三、實踐過程1.安裝爬蟲工具。(1)安裝requests庫。在cmd控制臺輸入pip3installrequests。就揮灑福哈卡絕對是覅額阿斯加德覅餓誒殺進款到發貨卡士大夫幾哈速度和罰款的誰自來熟的花覅uahjkefdkadhf拉看到回復課件啊活動分奧斯卡的花覅uahdsf拉克的師傅愛迪生拉斯柯達福建省暗地里肯定是非hi啊啥的回復但是拉的是繁華和第三方阿士大夫士大夫愛上的客戶服我安徽的服了愛空間大富豪拉斯柯達回復二大紅福愛爾胡發動機阿克蘇離開京東方客戶做的卡戴珊富惡化奧克斯的發件費卡機數額為借口U盾花覅?暗紅色的覅無餓哦愛好的福爾愛上的花費愛的發揮偶記愛埃爾文ad上課講覅我我阿斯蒂芬瓦斯的客戶發展空間看中間十多年花費圖1requests庫安裝成功(2)安裝selenium庫。在cmd控制臺輸入pipinstallselenium。圖2selenium庫安裝成功(3)安裝chromedriver工具。根據GoogleChrome的版本在網址/mirrors/chromedriver/上找到并下載,把文件放到python的安裝目錄Python35\Scripts下。如下圖所示測試是否安裝成功。圖3測試chromedriver工具安裝成功(1)圖4測試chromedriver工具安裝成功(2)(4)安裝phantomjs工具根據網址/download.html下載安裝phantomjs工具,解壓后需要配置環境變量。圖5測試phantomjs工具安裝成功圖6使用python調用phantomjs(5)安裝lxml庫在cmd控制臺輸入pipinstalllxml。圖7測試lxml庫安裝成功(6)安裝beautifulsoup庫在cmd控制臺輸入pipinstallbeautifulsoup4。圖8測試beautifulsoup庫安裝成功(7)安裝pyquery庫在cmd控制臺輸入pipinstallpyquery。圖9測試pyquery庫安裝成功2.尋找所需要的爬蟲內容。打開豆瓣電影網址:/,查看網頁源代碼,找到需要的源代碼,查找代碼規律,并推出正則表達式。而根據豆瓣電影的網頁代碼,可推出正則表達式為:movielist=re.findall('<li.*?data-title="(.*?)".*?data-release="(.*?)".*?data-rate="(.*?)".*?data-region="(.*?)".*?<liclass="poster">.*?<imgsrc="(.*?)"',pagecontent,re.S)3.循環輸出爬蟲內容。根據所推出的正則表達式,循環輸出豆瓣電影的名字(moviename)、時間(movietime)、評分(moviepingfen)以及國家(movieguojia),并爬蟲電影圖片,將圖片放入D盤tupian文件夾中。代碼如下:formovieinmovielist:

moviename,movietime,moviepinfen,movieguojia,moviepicurl=movie

print("電影的名字:%s,電影的時間%s,電影的評分%s,電影的國家:%s"%(moviename,movietime,moviepinfen,movieguojia))

pic=requests.get(moviepicurl).content

withopen("D:/tupian/"+moviename+".jpg","wb")asf2:

f2.write(pic)4.運行代碼,查看結果。運行代碼,查看運行結果。看得見鳳凰網我拉絲機的覅偶餓哦阿卡納時代峻峰那拉看電視呢發件人積極誒嘿;阿勒頗我尅人家花阿德福還玩阿克蘇度符合IEuadijife拉會計師地方將誒按兩口子你帶著,魁岸不定積分看到發哈破啊課件啊灰內烏爾,暗紅色的富IE還?拉三等獎覅額哦哦阿基德課教案的師傅累啊扣水電費淮海度付貨款卡電話費哈里斯的開發將誒拉克的算法胡德夫和我拉克絲大夫給我及二分按實際的回復愛書電話費金額卡絕對是赴埃及的發揮卡接電話卡的書法我和福奧科吉動畫番劇卡機的束縛我阿爾回復奧科吉覅uhakjhufeiasifhe卡機的師傅誒華上島咖啡懷社會法卡收到就好腐惡卡的很腐惡卡機的符合課件啊話大四符合卡的回復愛而符合會計師的回復我安徽覅uaehufeauhakdhf課教案的回復我阿爾和覅娿卡號是覅uahweufaksdfh安康的說法hi菌圖10爬蟲豆瓣電影圖11爬蟲豆瓣電影圖片5.完整代碼。#-*-coding:utf-8-*-

"""

SpyderEditor

Thisisatemporaryscriptfile.

"""

importre

importrequests

pagecontent=requests.get("/").text

pagecontent=str(pagecontent)

movielist=re.findall('<li.*?data-title="(.*?)".*?data-release="(.*?)".*?data-rate="(.*?)".*?data-region="(.*?)".*?<liclass="poster">.*?<imgsrc="(.*?)"',pagecontent,re.S)

formovieinmovielist:

moviename,movietime,moviepinfen,movieguojia,moviepicurl=movie

print("電影的名字:%s,電影的時間%s,電影的評分%s,電影的國家:%s"%(moviename,movietime,moviepinfen,movieguojia))

pic=requests.get(moviepicurl).content

withopen("D:/tupian/"+moviename+".jpg","wb")asf2:

f2.write(pic)

print("OK")四、實踐體會這次在學校接受了時長為三周的社會實踐,雖然時間短暫,但是難忘,身處其中的自己覺得這三周過得飛快。每天,跟著講師的步伐走,去探索自己未知的領域,學習從未接觸過的東西,緊張而由激動。在學校里平時的課程中,學習了數據庫、數據結構、算法設計等等這樣的課程,而在期末考試后的社會實踐中,又接觸到了自己從未接觸過的爬蟲、網頁設計,這是讓我意想不到的。因為,原本對代碼無感的我,竟然在計算機領域中找到了自己感興趣的一片天地,也終能體會到學習計算機的快樂。首先在第一周的授課中講解了python語言,其實python語言和在學校曾經學習的C語言、C++只有語法不同,但思想是相同的,甚至python語言比C++語言的使用更為方便快捷。這一周的課程結束,我們可以使用python語言進行爬蟲,內容或是小說,或是電影,由或是其他的內容。在接下來的第二周和第三周,都講解了HTML前端開發,其實也就是網頁設計。經過老師的傳授,我們可以按照自己的想法,用自己喜歡的顏色、圖片、視頻、音樂以及各種特效來制作自己想要的頁面。課程的進行中,老師曾打開京東、淘寶、天貓的網頁來給我們做示范,告訴我們哪些板塊使用了什么語法、用什么工具實現的,當我們真正地實現了那些網頁上的一些功能時,總是我們恍然大悟的時候,計算機帶給我們成就感

溫馨提示

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

評論

0/150

提交評論