資源描述:
《python網(wǎng)絡(luò)爬蟲實習(xí)報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、WORD格式可編輯Python網(wǎng)絡(luò)爬蟲實習(xí)報告專業(yè)技術(shù)知識共享WORD格式可編輯目錄一、選題背景-2-二、爬蟲原理-2-三、爬蟲歷史和分類-2-四、常用爬蟲框架比較-5-五、數(shù)據(jù)爬取實戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))-6-1分析網(wǎng)頁-6-2爬取數(shù)據(jù)-7-3數(shù)據(jù)整理、轉(zhuǎn)換-10-4數(shù)據(jù)保存、展示-12-5技術(shù)難點關(guān)鍵點-12-六、總結(jié)-14-專業(yè)技術(shù)知識共享WORD格式可編輯選題背景一、爬蟲原理二、爬蟲歷史和分類三、常用爬蟲框架比較Scrapy框架:Scrapy框架是一套比較成熟的Python爬蟲框架,是使用Pyth
2、on開發(fā)的快速、高層次的信息爬取框架,可以高效的爬取web頁面并提取出結(jié)構(gòu)化數(shù)據(jù)。Scrapy應(yīng)用范圍很廣,爬蟲開發(fā)、數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)測、自動化測試等。Crawley框架:Crawley也是Python開發(fā)出的爬蟲框架,該框架致力于改變?nèi)藗儚幕ヂ?lián)網(wǎng)中提取數(shù)據(jù)的方式。Portia框架:Portia框架是一款允許沒有任何編程基礎(chǔ)的用戶可視化地爬取網(wǎng)頁的爬蟲框架。newspaper框架:newspaper框架是一個用來提取新聞、文章以及內(nèi)容分析的Python爬蟲框架。Python-goose框架:Python-g
3、oose框架可提取的信息包括:<1>文章主體內(nèi)容;<2>文章主要圖片;<3>文章中嵌入的任heYoutube/Vimeo視頻;<4>元描述;<5>元標(biāo)簽專業(yè)技術(shù)知識共享WORD格式可編輯五、數(shù)據(jù)爬取實戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))1分析網(wǎng)頁#獲取html源代碼def__getHtml():data=[]pageNum=1pageSize=0try:while(pageSize<=125):#headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1)AppleWebKit/53
4、7.11(KHTML,likeGecko)Chrome/23.0.1271.64Safari/537.11',#'Referer':None#注意如果依然不能抓取的話,這里可以設(shè)置抓取網(wǎng)站的host#}#opener=urllib.request.build_opener()#opener.addheaders=[headers]url="https://movie.douban.com/top250?start="+str(pageSize)+"&filter="+str(pageNum)#data['h
5、tml%s'%i]=urllib.request.urlopen(url).read().decode("utf-8")專業(yè)技術(shù)知識共享WORD格式可編輯data.append(urllib.request.urlopen(url).read().decode("utf-8"))pageSize+=25pageNum+=1print(pageSize,pageNum)exceptExceptionase:raiseereturndata2爬取數(shù)據(jù)def__getData(html):title=[]#電影標(biāo)
6、題#rating_num=[]#評分range_num=[]#排名#rating_people_num=[]#評價人數(shù)movie_author=[]#導(dǎo)演data={}#bs4解析htmlsoup=BeautifulSoup(html,"html.parser")forliinsoup.find("ol",attrs={'class':'grid_view'}).find_all("li"):專業(yè)技術(shù)知識共享WORD格式可編輯title.append(li.find("span",class_="title
7、").text)#rating_num.append(li.find("div",class_='star').find("span",class_='rating_num').text)range_num.append(li.find("div",class_='pic').find("em").text)#spans=li.find("div",class_='star').find_all("span")#forxinrange(len(spans)):#ifx<=2:#pass#else:#rati
8、ng_people_num.append(spans[x].string[-len(spans[x].string):-3])str=li.find("div",class_='bd').find("p",class_='').text.lstrip()index=str.find("主")if(index==-1):index=str.find("...")print(li.find("div",class_=