資源描述:
《python網(wǎng)絡(luò)爬蟲實(shí)習(xí)報(bào)告【精選】》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、Python網(wǎng)絡(luò)爬蟲實(shí)習(xí)報(bào)告目錄一、選題背景二、爬蟲原理三、爬蟲歷史和分類常用爬蟲框架比較五.數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))1分析網(wǎng)頁(yè)-3-2爬取數(shù)據(jù)-3-3數(shù)據(jù)整理、轉(zhuǎn)換-4-4數(shù)據(jù)保存、展示-9-5技術(shù)難點(diǎn)關(guān)鍵點(diǎn)-10--13-六.總結(jié)、選題背景二、爬蟲原理三、爬蟲歷史和分類四、常用爬蟲框架比較Scrapy框架:Scrapy框架是一套比較成熟的Python爬蟲框架,是使用Python開發(fā)的快速、高層次的信息爬取框架,可以高效的爬取web頁(yè)面并提取出結(jié)構(gòu)化數(shù)據(jù)。Scrapy應(yīng)用范圍很廣,爬蟲開發(fā)、數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)測(cè)、自動(dòng)化測(cè)試等。Crawley框架:Crawley也是Python
2、開發(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框架可提取的信息包括:〈1〉文章主體內(nèi)容;〈2>文章主要圖片;〈3>文章中嵌入的任heYoutube/Vimeo視頻;〈4>元描述;〈5>元標(biāo)簽五、數(shù)據(jù)爬取實(shí)戰(zhàn)(豆瓣網(wǎng)爬取電影數(shù)據(jù))1分析網(wǎng)頁(yè)#獲取html源代碼defgetHtml():data=[]pageNum=1pa
3、geSize=0try:while(pageSize<=125):#headers={'User-Agent'Mozilla/5?0(WindowsNT6.1)AppleWebKit/537.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?s
4、tart=/z+str(pageSize)+"&f訂ter二"+str(pageNum)#data]'html%s'%i]=urllib.request.urlopen(url).read()?decode(勺tf-8“)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)題#ratin
5、g_num=[J#評(píng)分range_num=[]#排名#rating_people_num=[J#評(píng)價(jià)人數(shù)movie_author=[]#導(dǎo)演data={}#bs4解析htmlsoup=BeautifulSoup(html,"htm1.parser")forliinsoup?find("ol",attrs二{'class':grid_view,})?find_all("li"):title?append(1i?find("span",class_二"title")?text)ttrating_num.append(li.find("div",class_=fstar")?find("sp
6、an:class_=frating_numf)?text)range_num.append(1i?find("div",class_=,pic')?find("em“).text)tispans=li?find("div",class_=,star9).find_all(〃span〃)#forxinrange(1en(spans)):#ifx<=2:#pass#else:#rating_people_num.append(spans[xj.string[-1en(spans[x].string):-3j)str=li.find(〃div",class_=,bd,)?find("p",c
7、lass_=,')?text?IstripOindex二str?find("主")if(index==-1):index=str.find(”???")print(1i?find("div",class_=,pic')?find(〃em〃)?text)if(li.find("div",class_=,pic,)?find(〃em")?text==210):index=60#printCaaa^)#print(str[4:index])movie