資源描述:
《python網(wǎng)絡(luò)爬蟲實(shí)習(xí)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)報(bào)告Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)(報(bào)告)目錄一、選題背景-2-二、爬蟲原理-2-三、爬蟲歷史和分類-2-四、常用爬蟲框架比較-5-五、數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))-6-1分析網(wǎng)頁(yè)-6-2爬取數(shù)據(jù)-7-3數(shù)據(jù)整理、轉(zhuǎn)換-10-4數(shù)據(jù)保存、展示-12-5技術(shù)難點(diǎn)關(guān)鍵點(diǎn)-12-六、總結(jié)-14--11-Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)(報(bào)告)選題背景一、爬蟲原理二、爬蟲歷史和分類三、常用爬蟲框架比較Scrapy框架:Scrapy框架是一套比較成熟的Python爬蟲框架,是使用Python開(kāi)發(fā)的快速、高層
2、次的信息爬取框架,可以高效的爬取web頁(yè)面并提取出結(jié)構(gòu)化數(shù)據(jù)。Scrapy應(yīng)用范圍很廣,爬蟲開(kāi)發(fā)、數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)測(cè)、自動(dòng)化測(cè)試等。Crawley框架:Crawley也是Python開(kāi)發(fā)出的爬蟲框架,該框架致力于改變?nèi)藗儚幕ヂ?lián)網(wǎng)中提取數(shù)據(jù)的方式。Portia框架:Portia框架是一款允許沒(méi)有任何編程基礎(chǔ)的用戶可視化地爬取網(wǎng)頁(yè)的爬蟲框架。newspaper框架:newspaper框架是一個(gè)用來(lái)提取新聞、文章以及內(nèi)容分析的Python爬蟲框架。Python-goose框架:Python-goose框架可提取的信息包
3、括:<1>文章主體內(nèi)容;<2>文章主要圖片;<3>文章中嵌入的任heYoutube/Vimeo視頻;<4>元描述;<5>元標(biāo)簽-11-Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)(報(bào)告)五、數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))1分析網(wǎng)頁(yè)#獲取html源代碼def__getHtml():data=[]pageNum=1pageSize=0try:while(pageSize<=125):#headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.11(KHTML,li
4、keGecko)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['html%s'%i]=urllib
5、.request.urlopen(url).read().decode("utf-8")-11-Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)(報(bào)告)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)題#rating_num=[]#
6、評(píng)分range_num=[]#排名#rating_people_num=[]#評(píng)價(jià)人數(shù)movie_author=[]#導(dǎo)演data={}#bs4解析htmlsoup=BeautifulSoup(html,"html.parser")forliinsoup.find("ol",attrs={'class':'grid_view'}).find_all("li"):-11-Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)(報(bào)告)title.append(li.find("span",class_="title").text)#rating_
7、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:#rating_people_num.appen
8、d(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