




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
愛奇藝電影查詢系統(tǒng)實(shí)踐報(bào)告成果名稱:愛奇藝電影查詢系統(tǒng)愛奇藝電影查詢系統(tǒng)一、實(shí)踐目的在實(shí)踐中提高所學(xué)知識(shí)與現(xiàn)實(shí)系統(tǒng)結(jié)合的能力,努力解決并實(shí)現(xiàn)現(xiàn)實(shí)生活中的問題,并為自己能順利與社會(huì)環(huán)境接軌做準(zhǔn)備實(shí)踐內(nèi)容(系統(tǒng)簡(jiǎn)述)1.掌握python程序設(shè)置語言2.熟悉前端特性css、html、js3.掌握網(wǎng)絡(luò)爬蟲的原理和基本框架4.掌握網(wǎng)絡(luò)設(shè)置框架5.完成一個(gè)工具類網(wǎng)站制作1、爬蟲先分析網(wǎng)絡(luò)源代碼爬蟲后代碼<divclass="qy-list-wrap"><ulclass="qy-mod-ul"><liclass="qy-mod-li"><divclass="qy-list-imgvertical"><divclass="qy-mod-link-wrap"><atitle="使徒行者"class="qy-mod-link"href="http:///v_19rrm2pgd4.html"target="_blank"><imgalt="使徒行者"src="http:///common/fix/site-v4/qy-mod-img_260_360.png"class="qy-mod-coverfadeOutIn-enter-active"></a></div><divclass="title-wrap"><pclass="main"><spanclass="text-score">9.0</span><atitle="使徒行者"class="link-txt"href="http:///v_19rrm2pgd4.html"target="_blank">使徒行者</a></p></div></div></li><liclass="qy-mod-li"><divclass="qy-list-imgvertical"><divclass="qy-mod-link-wrap"><atitle="恐龍王"class="qy-mod-link"href="http:///v_19rqzttm6c.html"target="_blank"><imgalt="恐龍王"src="http:///common/fix/site-v4/qy-mod-img_260_360.png"class="qy-mod-coverfadeOutIn-enter-active"></a></div><divclass="title-wrap"><pclass="main"><spanclass="text-score">8.4</span><atitle="恐龍王"class="link-txt"href="http:///v_19rqzttm6c.html"target="_blank">恐龍王</a></p><ptitle="主演:呂佩玉/王衡/孫曄"class="sub">主演:呂佩玉/王衡/孫曄</p></div></div></li><liclass="qy-mod-li"><divclass="qy-list-imgvertical"><divclass="qy-mod-link-wrap"><atitle="新僵尸先生2"class="qy-mod-link"href="http:///v_19rrf6eqrk.html"target="_blank"><imgalt="新僵尸先生2"src="http:///common/fix/site-v4/qy-mod-img_260_360.png"class="qy-mod-coverfadeOutIn-enter-active"></a></div><divclass="title-wrap"><pclass="main"><spanclass="text-score">7.2</span><atitle="新僵尸先生2"class="link-txt"href="http:///v_19rrf6eqrk.html"target="_blank">新僵尸先生2</a></p><ptitle="主演:錢小豪/徐沅澔/謝昀杉"class="sub">主演:錢小豪/徐沅澔/謝昀杉</p></div></div></li><liclass="qy-mod-li"><divclass="qy-list-imgvertical"><divclass="qy-mod-link-wrap"><atitle="全民目擊"class="qy-mod-link"href="http:///v_19rrhd097w.html"target="_blank"><imgalt="全民目擊"src="http:///common/fix/site-v4/qy-mod-img_260_360.png"class="qy-mod-coverfadeOutIn-enter-active"></a></div><divclass="title-wrap"><pclass="main"><spanclass="text-score">9.0</span><atitle="全民目擊"class="link-txt"href="http:///v_19rrhd097w.html"target="_blank">全民目擊</a></p><ptitle=紅雷/余男</p></div></div></li><liclass="qy-mod-li"><divclass="qy-list-imgvertical"><divclass="qy-mod-link-wrap"><atitle="靈魂擺渡黃泉"class="qy-mod-link"href="http:///v_19rrfkek9w.html"target="_blank"><imgalt="靈魂擺渡黃泉"src="http:///common/fix/site-v4/qy-mod-img_260_360.png"class="qy-mod-coverfadeOutIn-enter-active"></a></div><divclass="title-wrap"><pclass="main"><spanclass="text-score">8.6</span><atitle="靈魂擺渡黃泉"class="link-txt"href="http:///v_19rrfkek9w.html"target="_blank">靈魂擺渡黃泉</a></p><ptitle="主演:于毅/岳麗娜/何花"class="sub">主演:于毅/岳麗娜/何花</p></div></div></li><liclass="qy-mod-li"><divclass="qy-list-imgvertical"><divclass="qy-mod-link-wrap"><atitle="澳門風(fēng)云3"class="qy-mod-link"href="http:///v_19rrkt424g.html"target="_blank"><imgalt="澳門風(fēng)云3"src="http:///common/fix/site-v4/qy-mod-img_260_360.png"class="qy-mod-coverfadeOutIn-enter-active"></a></div><divclass="title-wrap"><pclass="main"><spanclass="text-score">8.4</span><atitle="澳門風(fēng)云3"class="link-txt"href="http:///v_19rrkt424g.html"target="_blank">澳門風(fēng)云3</a></p></div></div></li><liclass="qy-mod-li"><divclass="qy-list-imgvertical"><divclass="qy-mod-link-wrap"><atitle="葉問3"class="qy-mod-link"href="http:///v_19rr74wclg.html"target="_blank"><imgalt="葉問3"src="http:///common/fix/site-v4/qy-mod-img_260_360.png"class="qy-mod-coverfadeOutIn-enter-active"></a></div><divclass="title-wrap"><pclass="main"><spanclass="text-score">8.6</span><atitle="葉問3"class="link-txt"href="http:///v_19rr74wclg.html"target="_blank">葉問3</a>圖2-1爬蟲結(jié)果1</li>圖2-2爬蟲結(jié)果22、數(shù)據(jù)庫(kù)mysql安裝mysql5.0版本,在mysql中新建數(shù)據(jù)庫(kù)movie_sys,建立的數(shù)據(jù)庫(kù)會(huì)在后面建立DjangoWeb框架時(shí)連接使用圖2-3新建數(shù)據(jù)庫(kù)DjangoWeb框架(后端)先安裝Django,再創(chuàng)建項(xiàng)目、App圖2-4創(chuàng)建的項(xiàng)目、App然后編寫Model層,配置settings.pyfromdjango.dbimportmodels
#Createyourmodelshere.
def__str__(self):
return'<Movie:{}>'.format()
classMeat:
verbose_name=verbose_name_plural="電影信息"
classUsers(models.Model):
username=models.CharField(max_length=30)
userpwd=models.CharField(max_length=30)INSTALLED_APPS=[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'movie',
]DATABASES={
#'default':{
#'ENGINE':'django.db.backends.sqlite3',
#'NAME':os.path.join(BASE_DIR,'db.sqlite3'),
#}
'default':{
'ENGINE':'django.db.backends.mysql',
'HOST':'',
'PORT':'3306',
'NAME':'movie_sys',
'USER':'root',
'PASSWORD':'root',
'OPTIONS':{'isolation_level':None}
}
}最后創(chuàng)建數(shù)據(jù)庫(kù)遷移文件,創(chuàng)建表和后臺(tái)登錄用戶圖2-5創(chuàng)建表、用戶DjangoWeb框架(前端)先配置路由,再修改views.py,創(chuàng)建表單文件,在student目錄下創(chuàng)建forms.py它要跟views.py同級(jí)。最后做出界面效果,每步頁(yè)面效果如圖圖2-6登錄界面圖2-7注冊(cè)界面圖2-8首頁(yè)界面圖2-10修改界面三、實(shí)踐過程(系統(tǒng)詳述)爬蟲首先要進(jìn)行的就是爬蟲,從網(wǎng)頁(yè)上爬出我們需要的數(shù)據(jù)、爬蟲是搜索引擎中的重要組成部分,為搜索引擎抓取互聯(lián)網(wǎng)中的數(shù)據(jù)。通用的搜索引擎如谷歌、百度等逐漸成為人們?cè)L問互聯(lián)網(wǎng)的入口,但由于其通用性限制,抓取網(wǎng)頁(yè)時(shí)沒有針對(duì)性,因而也無法對(duì)其抓取的結(jié)果進(jìn)行針對(duì)特定領(lǐng)域的進(jìn)一步分析,導(dǎo)致查詢結(jié)果不夠深入和專業(yè)化;另外通用的搜索引擎通常會(huì)返回一些與用戶所尋找的主題無關(guān)的結(jié)果,造成信息過載。在爬蟲系統(tǒng)中,待抓取URL隊(duì)列是很重要的一部分。本文提出的爬蟲程序通過模擬登錄二手房網(wǎng)址并獲取相關(guān)數(shù)據(jù),并將這些數(shù)據(jù)保存到本地,方便進(jìn)一步的數(shù)據(jù)挖掘與分析。最后本文利用Python可視化方法對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的數(shù)據(jù)分析。使用本文爬蟲程序可以節(jié)省數(shù)據(jù)分析人員的開發(fā)時(shí)間,使得他們可以將更多的精力放在數(shù)據(jù)分析上面,同時(shí)也可以對(duì)海量數(shù)據(jù)起到針對(duì)性的提取。網(wǎng)頁(yè)的抓取策略可以分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種。深度優(yōu)先在很多情況下會(huì)導(dǎo)致爬蟲的陷入(trapped)問題,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。網(wǎng)頁(yè)分析算法可以歸納為基于網(wǎng)絡(luò)拓?fù)?、基于網(wǎng)頁(yè)內(nèi)容和基于用戶訪問行為三種類型。(1)分析網(wǎng)絡(luò)源代碼首先打開愛奇藝電影官網(wǎng),查看網(wǎng)絡(luò)源代碼,發(fā)現(xiàn)每一部正在熱映的電影的源代碼都是以“<li>”開始,以“</li>”結(jié)束。圖3-1源代碼起止符號(hào)然后選擇要爬取的信息,我選擇了正在熱映的電影的名稱、海報(bào)、上映時(shí)間、評(píng)分和國(guó)家,從源代碼的標(biāo)簽中總結(jié)提取信息,寫出正則表達(dá)式:'<li.*?data.title="(.*?)".*?data-release="(.*?)".*?data-rate="(.*?)".*?data-region="(.*?)".*?<liclass="poster">.*?<imgsrc="(.*?)"'(2)保存數(shù)據(jù)爬取的數(shù)據(jù)有多種儲(chǔ)存的方法,我們學(xué)習(xí)了保存到文件夾和數(shù)據(jù)庫(kù),下面這種是保存到文件夾,保存到數(shù)據(jù)庫(kù)會(huì)在后面的數(shù)據(jù)庫(kù)模塊中寫詳細(xì)過程。
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,moviepingfen,movieguojia,moviepicture=movie
print("電影的名字:%s,電影的時(shí)間%s,電影的評(píng)分%s,電影的國(guó)家:%s"%(moviename,movietime,moviepingfen,movieguojia))
pic=requests.get(moviepicture).content
try:
withopen("C:/Users/air/Desktop/課程/大二/實(shí)踐周/PYcharm/5th/電影"+moviename+".jpg","wb")asf2:
f2.write(pic)
exceptFileNotFoundError:
print(moviename+"文件不能保存")
print("OK")<divclass="quotes"><iclass="icon-quote-right"></i>Vczh,MicrosoftInc.</div></div></div><divclass="row"><divclass="span12"><h4>ThepythoncrawlerreadstheyoudaotranslationAPI</h4><p>fromurllibimportrequest</p><p>fromurllibimportparse</p><p>importjson</p><p>if__name__=="__main__":</p><p>Request_URL='/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=/link'</p><p>whileTrue:</p><p>Form_Data={}</p><p>Form_Data['type']='AUTO'</p><p>Form_Data['i']=input("Input:")</p><p>Form_Data['doctype']='json'</p><p>Form_Data['Version']='1.8'</p><p>Form_Data['keyfrom']='fanyi.web'</p><p>Form_Data['ue']='ue:UTF-8'</p><p>Form_Data['action']='FY_BY_CLICKBUTTON'</p><p>data=parse.urlencode(Form_Data).encode('utf-8')</p><p>response=request.urlopen(Request_URL,data)</p><p>html=response.read().decode('utf-8')</p><p>translate_results=json.loads(html)</p><p>translate_results=translate_results['translateResult'][0][0]['tgt']</p><p>print("Result:%s"%translate_results)</p></p><divclass="span4"><h3>CoderSays</h3><divclass="client-says">"StayCurious."</div><divclass="client-says-2"><divclass="quotes"><iclass="icon-quote-right"></i>Ramsy,MicrosoftInc.</div></div></div></div><divclass="span12"><h4>ThepythoncrawlerreadstheHuyaStreamAPI</h4><p>defloadPage(url):</p><p>user_agent=random.choice(UA_LIST)</p><p>headers={'User-Agent':user_agent}</p><p>context=ssl._create_unverified_context()</p><p>#SendingRequest</p><p>req=request.Request(url,headers=headers)</p><p>#打開對(duì)象</p><p>response=request.urlopen(req,context=context)</p><p>#Reading</p><p>html=response.read()</p><p>html=html.decode("utf-8")</p><p>returnhtml</p><p>defwritePage(html,filename):</p><p>withopen(filename,"w",encoding="utf-8")astarget:</p><p>target.write(html)</p><p>target.close()</p><p>print("Finish")</p></p></p></div><metaname="viewport"content="width=device-width,initial-scale=1.0"><linkhref="img/favicon.ico"rel="icon"type="image/png"><linkhref="css/styles.css"rel="stylesheet"><linkhref="css/bootstrap-override.css"rel="stylesheet"><linkhref="css/font-awesome/font-awesome.css"rel="stylesheet"><linkrel="stylesheet"href="css/flexslider.css"type="text/css"media="screen"></head><body><headerid="header"><divclass="container"><divclass="rowt-container"><divclass="rowspace50"></div></div></div></div></div>圖3-4連接mysql新建數(shù)據(jù)庫(kù)它是由Python寫成的,語法簡(jiǎn)單,便于操作。能完整的編輯網(wǎng)頁(yè),使網(wǎng)頁(yè)具有插入,刪除、修改等功能。Django使用時(shí)需要安裝,并且檢測(cè)是否安裝成功,安裝過程簡(jiǎn)單,但需要安裝很多相應(yīng)的庫(kù),需要在老師的指導(dǎo)下完成。Django需要結(jié)合Pycharm和MySQL使用,根據(jù)老師講解,我們需要注意Django和MySQL的版本問題,如果版本問題沒有解決,則在數(shù)據(jù)遷移時(shí)會(huì)出現(xiàn)錯(cuò)誤,在老師的講解過程中,我們需要更改配置,在數(shù)據(jù)遷移時(shí)要注意中英文符號(hào)的轉(zhuǎn)換。Ajax是一種異步刷新技術(shù),即就是它可以在不重新加載的情況下對(duì)網(wǎng)頁(yè)進(jìn)行刷新,不需要加載,使操作更加迅速簡(jiǎn)潔。在mysql中新建數(shù)據(jù)庫(kù)movie_sys圖3-5新建數(shù)據(jù)庫(kù)建立的數(shù)據(jù)庫(kù)會(huì)在后面建立DjangoWeb框架時(shí)連接使用DjangoWeb框架(后端)Django項(xiàng)目是一個(gè)Python定制框架,它源自一個(gè)在線新聞Web站點(diǎn),Django框架的核心組件有:用于創(chuàng)建模型的對(duì)象關(guān)系映射、為最終用戶設(shè)計(jì)的完美管理界面、一流的URL設(shè)計(jì)、設(shè)計(jì)者友好的模板語言、緩存系統(tǒng)。安裝DjangopipinstallDjango創(chuàng)建項(xiàng)目django-adminstartprojectmovie_sys圖3-6創(chuàng)建項(xiàng)目創(chuàng)建App進(jìn)入movie_sys目錄中pythonmanage.pystartappmovie圖3-7創(chuàng)建App編寫Model層fromdjango.dbimportmodels
#Createyourmodelshere.
classMovie(models.Model):
name=models.CharField(max_length=128,verbose_name="電影的名字")
time=models.CharField(max_length=128,verbose_name="電影的時(shí)間")
score=models.CharField(max_length=128,verbose_name="電影的評(píng)分")
country=models.CharField(max_length=128,verbose_name="電影的國(guó)家")
picture=models.CharField(max_length=128,verbose_name="電影的海報(bào)")
def__str__(self):
return'<Movie:{}>'.format()
classMeat:
verbose_name=verbose_name_plural="電影信息"
classUsers(models.Model):
username=models.CharField(max_length=30)
userpwd=models.CharField(max_length=30)配置settings.pyINSTALLED_APPS=[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'movie',
]DATABASES={
#'default':{
#'ENGINE':'django.db.backends.sqlite3',
#'NAME':os.path.join(BASE_DIR,'db.sqlite3'),
#}
'default':{
'ENGINE':'django.db.backends.mysql',
'HOST':'',
'PORT':'3306',
'NAME':'movie_sys',
'USER':'root',
'PASSWORD':'root',
'OPTIONS':{'isolation_level':None}
}
}在mysql中創(chuàng)建庫(kù)pythonmanage.pymakemigrations#創(chuàng)建數(shù)據(jù)庫(kù)遷移文件pythonmanage.pymigrate#創(chuàng)建表pythonmanage.pycreatesuperuser#創(chuàng)建后臺(tái)登錄用戶圖3-7創(chuàng)建表、用戶界面設(shè)計(jì)登錄界面:<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
</head>
<h2>再次輸入密碼:<inputtype="password"><br></h2>
首頁(yè)界面:<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
<!--<linkrel="stylesheet"href="../static/css/mycss.css">-->
<styletype="text/css">
li{
list-style:none;
float:left;
width:450px;
}
</style>
</head>
<body>
歡迎{{username}}登錄<ahref="/outlogin">安全退出</a>
<hr>
<br>
{%formovinMovlist%}
<li>
<imgsrc="../static/img/{{mov.picture}}"width="100px"><br>
電影名稱:{{}}<br>
上映時(shí)間:{{mov.time}}<br>
豆瓣評(píng)分:{{mov.score}}<br>
電影的國(guó)家:{{mov.country}}<br>
<ahref="/editmov?movid={{mov.id}}">修改</a>
<ahref="/delmov?movid={{mov.id}}">刪除</a>
</li>
{%endfor%}
<br><ahref="/movadd">新增電影</a>
</body>
</html>增加界面:<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>電影的新增</title>
</head>
<body>
<formaction="/movadd"method="post">
{%csrf_token%}
<table>
<tr><td>電影名稱</td><td>{{}}</td></tr>
<tr><td>上映時(shí)間</td><td>{{form.time}}</td></tr>
<tr><td>電影評(píng)分</td><td>{{form.score}}</td></tr>
<tr><td>電影的國(guó)家</td><td>{{form.country}}</td></tr>
</table>
<inputtype="submit"value="添加"/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公文處理的最佳實(shí)踐試題及答案
- 永久性結(jié)構(gòu)試題及答案
- 自考行政管理的信念與價(jià)值觀培養(yǎng)試題及答案
- 行政公文實(shí)例的解析與學(xué)習(xí)試題及答案
- 行政管理組織發(fā)展試題及答案全局分析
- 會(huì)布置合同范例
- 深入理解市政學(xué)知識(shí)的考試題及答案
- 買土地建房合同范例
- 2025年行文規(guī)范與公文寫作試題及答案
- 人力資源管理與勞動(dòng)法的關(guān)系試題及答案
- 砭石療法與傳統(tǒng)中醫(yī)理論的關(guān)系及發(fā)展
- 浙江臺(tái)州歷年中考語文文言文閱讀試題33篇(含答案與翻譯)(截至2023年)
- 第二節(jié)清潔消毒滅菌講解
- DBJT13-412-2022 城鎮(zhèn)垃圾填埋場(chǎng)惡臭污染控制技術(shù)標(biāo)準(zhǔn)
- 2025中醫(yī)體重管理臨床指南
- 2025貴州茅臺(tái)酒股份限公司和義興酒業(yè)分公司招聘筆試高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2023年普通高等學(xué)校招生全國(guó)統(tǒng)一考試新課標(biāo)全國(guó)Ⅰ卷數(shù)學(xué)真題(解析版)
- 2025年中國(guó)融通集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 結(jié)構(gòu)鑒定合同范例
- 2024年上海市中考英語試題和答案
- 教育部《中小學(xué)校園食品安全和膳食經(jīng)費(fèi)管理工作指引》知識(shí)培訓(xùn)
評(píng)論
0/150
提交評(píng)論