計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)《基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)》_第1頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)《基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)》_第2頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)《基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)》_第3頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)《基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)》_第4頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)《基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)》_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGE學(xué)習(xí)文檔僅供參考山東建筑大學(xué)課程設(shè)計(jì)成果報(bào)告題目:基于Python的網(wǎng)絡(luò)爬蟲設(shè)計(jì)課程:電腦網(wǎng)絡(luò)A院〔部〕:管理工程學(xué)院專業(yè):信息管理與信息系統(tǒng)班級(jí): 學(xué)生: 學(xué)號(hào): 指導(dǎo)教師:完成日期:學(xué)習(xí)文檔僅供參考目錄19841設(shè)計(jì)目的 1211832設(shè)計(jì)任務(wù)內(nèi)容 1313773網(wǎng)絡(luò)爬蟲程序總體設(shè)計(jì) 130374網(wǎng)絡(luò)爬蟲程序詳細(xì)設(shè)計(jì) 151524.1設(shè)計(jì)環(huán)境和目標(biāo)分析 19134.1.1設(shè)計(jì)環(huán)境 198574.1.2目標(biāo)分析 230974.2爬蟲運(yùn)行流程分析 2188264.3控制模塊詳細(xì)設(shè)計(jì) 3312914.3爬蟲模塊詳細(xì)設(shè)計(jì) 3210024.3.1URL管理器設(shè)計(jì) 3193724.3.2網(wǎng)頁(yè)下載器設(shè)計(jì) 3103074.3.3網(wǎng)頁(yè)解析器設(shè)計(jì) 3212264.4數(shù)據(jù)輸出器詳細(xì)設(shè)計(jì) 4168595調(diào)試與測(cè)試 4224745.1調(diào)試過(guò)程中遇到的問(wèn)題 480425.2測(cè)試數(shù)據(jù)及結(jié)果顯示 5223196課程設(shè)計(jì)心得與體會(huì) 5171837參考文獻(xiàn) 6184378附錄1網(wǎng)絡(luò)爬蟲程序設(shè)計(jì)代碼 661119附錄2網(wǎng)絡(luò)爬蟲爬取的數(shù)據(jù)文檔 9學(xué)習(xí)文檔僅供參考1設(shè)計(jì)目的本課程設(shè)計(jì)是信息管理與信息系統(tǒng)專業(yè)重要的實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《電腦網(wǎng)絡(luò)》課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù):1.穩(wěn)固和加深學(xué)生對(duì)電腦網(wǎng)絡(luò)基本知識(shí)的理解和掌握;2.培養(yǎng)學(xué)生進(jìn)行對(duì)網(wǎng)絡(luò)規(guī)劃、管理及配置的能力或加深對(duì)網(wǎng)絡(luò)協(xié)議體系結(jié)構(gòu)的理解或提高網(wǎng)絡(luò)編程能力;3.提高學(xué)生進(jìn)行技術(shù)總結(jié)和撰寫說(shuō)明書的能力。2設(shè)計(jì)任務(wù)內(nèi)容網(wǎng)絡(luò)爬蟲是從web中發(fā)現(xiàn),下載以及存儲(chǔ)內(nèi)容,是搜索引擎的核心部分。傳統(tǒng)爬蟲從一個(gè)或假設(shè)干初始網(wǎng)頁(yè)的URL開始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。參照開放源碼分析網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)方法,給出設(shè)計(jì)方案,畫出設(shè)計(jì)流程圖。選擇自己熟悉的開發(fā)環(huán)境,實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲抓取頁(yè)面、從而形成結(jié)構(gòu)化數(shù)據(jù)的基本功能,界面適當(dāng)美化。給出軟件測(cè)試結(jié)果。3網(wǎng)絡(luò)爬蟲程序總體設(shè)計(jì)URL管理器URL管理器數(shù)據(jù)輸出器網(wǎng)頁(yè)下載器網(wǎng)頁(yè)解析器爬蟲控制器數(shù)據(jù)輸出器網(wǎng)頁(yè)下載器網(wǎng)頁(yè)解析器爬蟲控制器在本爬蟲程序中共有三個(gè)模塊:爬蟲調(diào)度端:?jiǎn)?dòng)爬蟲,停止爬蟲,監(jiān)視爬蟲的運(yùn)行情況爬蟲模塊:包含三個(gè)小模塊,URL管理器、網(wǎng)頁(yè)下載器、網(wǎng)頁(yè)解析器。URL管理器:對(duì)需要爬取的URL和已經(jīng)爬取過(guò)的URL進(jìn)行管理,可以從URL管理器中取出一個(gè)待爬取的URL,傳遞給網(wǎng)頁(yè)下載器。網(wǎng)頁(yè)下載器:網(wǎng)頁(yè)下載器將URL指定的網(wǎng)頁(yè)下載下來(lái),存儲(chǔ)成一個(gè)字符串,傳遞給網(wǎng)頁(yè)解析器。網(wǎng)頁(yè)解析器:網(wǎng)頁(yè)解析器解析傳遞的字符串,解析器不僅可以解析出需要爬取的數(shù)據(jù),而且還可以解析出每一個(gè)網(wǎng)頁(yè)指向其他網(wǎng)頁(yè)的URL,這些URL被解析出來(lái)會(huì)補(bǔ)充進(jìn)URL管理器3、數(shù)據(jù)輸出模塊:存儲(chǔ)爬取的數(shù)據(jù)4網(wǎng)絡(luò)爬蟲程序詳細(xì)設(shè)計(jì)4.1設(shè)計(jì)環(huán)境和目標(biāo)分析4.1.1設(shè)計(jì)環(huán)境IDE:pycharm4.1.2目標(biāo)分析目標(biāo):從百度詞條Python開始,以廣度優(yōu)先的方式,爬取相關(guān)聯(lián)的假設(shè)干詞條網(wǎng)頁(yè)的標(biāo)題和簡(jiǎn)介〔1〕初始URL:"://baike.baidu/item/Python?sefr=ps"〔2〕詞條頁(yè)面URL格式:://baike.baidu/item/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6數(shù)據(jù)格式:標(biāo)題——<ddclass="lemmaWgt-lemmaTitle-title"><h1>Python</h1>簡(jiǎn)介——<divclass="lemma-summary"label-module="lemmaSummary">〔4〕頁(yè)面編碼:utf-84.2爬蟲運(yùn)行流程分析爬蟲程序的運(yùn)行流程如下圖。爬蟲控制器從給定的URL開始,將給定的初始URL添加到URL管理器中,然后調(diào)用URL管理器的相關(guān)方法,判斷是否有待爬取的URLURL判斷是否有待爬取的URL,如果有待爬取的URL,則返回給控制器,控制器將這個(gè)URL傳遞給網(wǎng)頁(yè)下載器,下載該網(wǎng)頁(yè)網(wǎng)頁(yè)下載器將下載好的數(shù)據(jù)返回給控制器,控制器再將返回的數(shù)據(jù)傳遞給網(wǎng)頁(yè)解析器解析網(wǎng)頁(yè)解析器解析網(wǎng)頁(yè)之后獲取網(wǎng)頁(yè)數(shù)據(jù)和網(wǎng)頁(yè)的URL鏈接,再將這兩個(gè)數(shù)據(jù)傳遞給控制器控制器得到解析出來(lái)的數(shù)據(jù)之后,將新的URL鏈接傳遞給URL管理器,將價(jià)值數(shù)據(jù)傳遞給數(shù)據(jù)輸出器輸出數(shù)據(jù)輸出器以文本的形式輸出傳遞進(jìn)來(lái)的數(shù)據(jù)?;氐降谝徊?,循環(huán)4.3控制模塊詳細(xì)設(shè)計(jì)爬蟲控制器主要負(fù)責(zé)調(diào)度各個(gè)模塊,所以在設(shè)計(jì)的時(shí)候只需要一次調(diào)用其他模塊的方法,給對(duì)應(yīng)的模塊傳遞數(shù)據(jù)即可。比較簡(jiǎn)單,可參見(jiàn)附錄1查看源碼。4.3爬蟲模塊詳細(xì)設(shè)計(jì)4.3.1URL管理器設(shè)計(jì)URL管理器主要管理待抓取的URL集合和已抓取的URL集合。URL管理器設(shè)計(jì)的難點(diǎn)在于:防止重復(fù)抓取,防止循環(huán)抓取。判斷是否還有待爬取URL添加新URL到待爬取集合中判斷是否還有待爬取URL添加新URL到待爬取集合中獲取待爬取URLURL管理器獲取待爬取URLURL管理器將URL從待爬取集合移動(dòng)端已爬取集合判斷待添加URL是否在容器中將URL從待爬取集合移動(dòng)端已爬取集合判斷待添加URL是否在容器中常用的URL管理器存儲(chǔ)方式有三種,一是使用python內(nèi)存即set集合來(lái)存儲(chǔ)URL,二是使用數(shù)據(jù)庫(kù),例如MySQL,三是使用緩存數(shù)據(jù)庫(kù),例如redis。因?yàn)檫@只是個(gè)簡(jiǎn)單的python爬蟲,所以我們選擇利用內(nèi)存存儲(chǔ)URL。建立兩個(gè)集合,一個(gè)為待爬取集合,一個(gè)為已爬取集合,功能上圖所示。4.3.2網(wǎng)頁(yè)下載器設(shè)計(jì)網(wǎng)頁(yè)下載器是將互聯(lián)網(wǎng)上URL對(duì)應(yīng)的網(wǎng)頁(yè)下載到本地的工具。Python常用的網(wǎng)頁(yè)下載器有兩種,一個(gè)是python自帶的urllib2,一個(gè)是第三方包requests。這里我們選用的是urllib2,比較簡(jiǎn)單的網(wǎng)頁(yè)下載工具,其中最簡(jiǎn)潔的下載網(wǎng)頁(yè)的代碼如下:importurllib2response=urllib2.urlopen(url)

#如果請(qǐng)求碼不是200,則表示請(qǐng)求不成功。

#典型的錯(cuò)誤包括404〔頁(yè)面無(wú)法找到〕,403〔請(qǐng)求禁止〕,401〔待驗(yàn)證的請(qǐng)求〕

#5XX回應(yīng)代碼以“5”開頭的狀態(tài)碼表示服務(wù)器端發(fā)現(xiàn)自己出現(xiàn)錯(cuò)誤,不能繼續(xù)執(zhí)行請(qǐng)求

ifresponse.getcode()!=200:

print"downloadhtmlfailed"

cont=response.read()4.3.3網(wǎng)頁(yè)解析器設(shè)計(jì)網(wǎng)頁(yè)解析器是從網(wǎng)頁(yè)中提取有價(jià)值數(shù)據(jù)的工具。價(jià)值數(shù)據(jù)價(jià)值數(shù)據(jù)網(wǎng)頁(yè)解析器網(wǎng)頁(yè)解析器新URL列表HTML網(wǎng)頁(yè)字符串新URL列表HTML網(wǎng)頁(yè)字符串Python常用的解析器有四種,一是正則表達(dá)式,二是html.parser,三是beautifulSoup,四是lxml。這里我選用的是beautifulSoup作為我的網(wǎng)頁(yè)解析器,相對(duì)于正則表達(dá)式來(lái)說(shuō),使用beautifulSoup來(lái)解析網(wǎng)頁(yè)更為簡(jiǎn)單。beautifulSoup將網(wǎng)頁(yè)轉(zhuǎn)化為DOM樹來(lái)解析,每一個(gè)節(jié)點(diǎn)是網(wǎng)頁(yè)的每個(gè)標(biāo)簽,通過(guò)它提供的方法,你可以很容易的通過(guò)每個(gè)節(jié)點(diǎn)獲取你想要的信息。使用方法如下:#創(chuàng)建BeautifulSoup對(duì)象soup=BeautifulSoup(html_cont,'html.parser',from_encoding='utf-8')#查找所有標(biāo)簽為a的節(jié)點(diǎn),且href匹配正則表達(dá)式links=soup.find_all('a',href=repile(r"/item/\%"))#查找所欲標(biāo)簽為div的節(jié)點(diǎn)summary_node=soup.find('div',class_="lemma-summary")4.4數(shù)據(jù)輸出器詳細(xì)設(shè)計(jì)數(shù)據(jù)輸出器是負(fù)責(zé)數(shù)據(jù)輸出的工具。如果要輸出的文件不存在,程序會(huì)自動(dòng)創(chuàng)建,并且每次重寫之前都會(huì)清空網(wǎng)頁(yè)的內(nèi)容。這里我選擇的輸出方式是TXT文檔,直接將數(shù)據(jù)分析器得到的數(shù)據(jù)存儲(chǔ)在output.txt文件中。5調(diào)試與測(cè)試5.1調(diào)試過(guò)程中遇到的問(wèn)題爬取第一個(gè)頁(yè)面之后沒(méi)有新的頁(yè)面解決方案:根據(jù)子網(wǎng)頁(yè),選擇合適的正則表達(dá)式〔1〕測(cè)試過(guò)程中某些網(wǎng)頁(yè)中缺少標(biāo)題或簡(jiǎn)介。解決方案:往集合中添加數(shù)據(jù)的時(shí)候,判斷一下是否為空,不為空再添加。5.2測(cè)試數(shù)據(jù)及結(jié)果顯示測(cè)試的結(jié)果以txt文檔形式顯示,生成的文檔路徑和代碼路徑一致、6課程設(shè)計(jì)心得與體會(huì)Python是一門面向?qū)ο蟮慕忉屝哉Z(yǔ)言〔腳本語(yǔ)言〕,這一類語(yǔ)言的特點(diǎn)就是不用編譯,程序在運(yùn)行的過(guò)程中,由對(duì)應(yīng)的解釋器向CPU進(jìn)行翻譯,個(gè)人理解就是一邊編譯一邊執(zhí)行。而\o"Java知識(shí)庫(kù)"\t":///w815878564/article/details/_blank"Java這一類語(yǔ)言是需要預(yù)先編譯的。沒(méi)有編譯最大的痛苦就是無(wú)法進(jìn)行斷點(diǎn)調(diào)試,唯一的方法就是在有疑問(wèn)的地方打印各個(gè)變量的值來(lái)進(jìn)行調(diào)試。這一類語(yǔ)言也沒(méi)用類型,也就是說(shuō)一個(gè)變量即可能是int型,但是也可能是String型,而且可以隨時(shí)變化。

\o"Python知識(shí)庫(kù)"\t":///w815878564/article/details/_blank"python對(duì)于代碼格式要求也相當(dāng)嚴(yán)格,通過(guò)對(duì)于縮進(jìn)的距離來(lái)判斷代碼是否處于同一個(gè)代碼塊。

Python也不依靠分號(hào)來(lái)決定一句代碼是否結(jié)束,一行代碼就是一句代碼。這樣做的好處在于代碼編寫看上去很統(tǒng)一,不過(guò)習(xí)慣了java再看python,一開始還真的有點(diǎn)懵。

總得來(lái)說(shuō),對(duì)Python的初涉感覺(jué)不錯(cuò),這門語(yǔ)言相比較Java更加的簡(jiǎn)潔,這次的課設(shè)是初步接觸python,以后會(huì)自己深入學(xué)習(xí)。7參考文獻(xiàn)[1]錢程,陽(yáng)小蘭,朱福喜等.基于Python的網(wǎng)絡(luò)爬蟲技術(shù)[J].黑龍江科技信息,2016,(36):273.[2]于Python的簡(jiǎn)單網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2017,(8):72-73.[3]\t"://product.china-pub/_blank",CorePythonProgramming.2001-9-118附錄1網(wǎng)絡(luò)爬蟲程序設(shè)計(jì)代碼#coding:utf-8

importlogging

fromwebCralerimporturl_manager,html_downloader,html_outputer,html_parser

classSpiderMain(object):

#初始化URL管理器,網(wǎng)頁(yè)下載器,網(wǎng)頁(yè)解析器和數(shù)據(jù)輸出器

def__init__(self):

self.urls=url_manager.UrlManager()

self.downloader=html_downloader.HtmlDownloader()

self.parser=html_parser.HtmlParser()

self.outputer=html_outputer.HtmlOutputer()

#爬取網(wǎng)頁(yè)

defcraw(self,url):

count=1

#向URL管理器添加新的URL

self.urls.add_new_url(url)

whileself.urls.has_new_url():

try:

#如果有新的URL,獲取這個(gè)新的URL

new_url=self.urls.get_new_url()

#打印這是第幾個(gè)爬取的URL

print'craw%d:%s'%(count,new_url)

#使用網(wǎng)頁(yè)下載器下載這個(gè)網(wǎng)頁(yè)的內(nèi)容

html_cont=self.downloader.download(new_url)

#使用網(wǎng)頁(yè)解析器解析這個(gè)網(wǎng)頁(yè)的內(nèi)容,分別為URL和數(shù)據(jù)

new_urls,new_data=self.parser.parse(new_url,html_cont)

#將解析器解析的RL添加到URL管理器

self.urls.add_new_urls(new_urls)

#將解析器解析的數(shù)據(jù)傳遞給數(shù)據(jù)輸器

self.outputer.collect_data(new_data)

#爬取10個(gè)數(shù)據(jù)后自動(dòng)結(jié)束

ifcount==20:

break

count=count+1

exceptExceptionase:

logging.exception(e)

print'crawfailed'

#數(shù)據(jù)輸出器將數(shù)據(jù)使用HTML的方式輸出

self.outputer.output_html()

if__name__=='__main__':

print"begin"

root_url="://baike.baidu/item/Python?sefr=ps"

obj_spider=SpiderMain()

obj_spider.craw(root_url)#coding:utf-8

classUrlManager(object):

def__init__(self):

self.new_urls=set()

self.old_urls=set()

#添加URL

defadd_new_url(self,url):

ifurlisNone:

return

ifurlnotinself.new_urlsandurlnotinself.old_urls:

self.new_urls.add(url)

defadd_new_urls(self,urls):

ifurlsisNoneorlen(urls)==0:

return

forurlinurls:

self.add_new_url(url)

defhas_new_url(self):

returnlen(self.new_urls)!=0

defget_new_url(self):

new_url=self.new_urls.pop()

self.old_urls.add(new_url)

returnnew_urlhtml_downloader.py#coding:utf-8

importurllib2

classHtmlDownloader(object):

defdownload(self,url):

ifurlisNone:

returnNone

response=urllib2.urlopen(url)

#如果請(qǐng)求碼不是200,則表示請(qǐng)求不成功。

#典型的錯(cuò)誤包括404〔頁(yè)面無(wú)法找到〕,403〔請(qǐng)求禁止〕,401〔待驗(yàn)證的請(qǐng)求〕

#5XX回應(yīng)代碼以“5”開頭的狀態(tài)碼表示服務(wù)器端發(fā)現(xiàn)自己出現(xiàn)錯(cuò)誤,不能繼續(xù)執(zhí)行請(qǐng)求

ifresponse.getcode()!=200:

print"downloadhtmlfailed"

returnNone

returnresponse.read()url_parse.py#coding:utf-8

importurlparse

frombs4importBeautifulSoup

importre

classHtmlParser(object):

defparse(self,page_url,html_cont):

ifpage_urlisNoneorhtml_contisNone:

return

soup=BeautifulSoup(html_cont,'html.parser',from_encoding='utf-8')

#解析URL列表,獲取URL

new_urls=self._get_new_urls(page_url,soup)

#解析數(shù)據(jù)

new_data=self._get_new_date(page_url,soup)

printnew_data

returnnew_urls,new_data

def_get_new_urls(self,page_url,soup):

new_urls=set()

#://baike.baidu/item/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6

#://baike.baidu/item/%E6%BA%90%E4%BB%A3%E7%A0%81/3969

links=soup.find_all('a',href=repile(r"/item/\%"))

forlinkinlinks:

new_url=link['href']

#://baike.baidu/item/Python?sefr=ps

new_full_url=urlparse.urljoin("://baike.baidu/",new_url)

new_urls.add(new_full_url)

returnnew_urls

def_get_new_date(self,page_url,soup):

res_data={}

#url

res_data['url']=page_url

#<ddclass="lemmaWgt-lemmaTitle-title"><h1>Python</h1>

title_node=soup.find('dd',class_="lemmaWgt-lemmaTitle-title").find('h1')

res_data['title']=title_node.get_text()

#<divclass="lemma-summary"label-module="lemmaSummary">

summary_node=soup.find('div',class_="lemma-summary")

#這句話有可能出現(xiàn)空!?。?/p>

res_data['summary']=summary_node.get_text()

printres_data['summary']

returnres_datahtml_outputer.py#coding:utf-8

classHtmlOutputer(object):

def__init__(self):

#建立列表存放數(shù)據(jù)

self.datas=[]

#收集數(shù)據(jù)

defcollect_data(self,data):

ifdataisNone:

return

self.datas.append(data)

#輸出數(shù)據(jù)

defoutput_html(self):

fout=open('output.txt','w')

fordatainself.datas:

fout.write(data['url']+"\n")

fout.write(data['title'].encode('utf-8'))

fout.write(data['summary'].encode('utf-8')+"\n\n")

fout.close()9附錄2網(wǎng)絡(luò)爬蟲爬取的數(shù)據(jù)文檔://baike.baidu/item/Python?sefr=ps

Python

Python[1]

〔英國(guó)發(fā)音:/?pa?θ?n/美國(guó)發(fā)音:/?pa?θɑ?n/〕,是一種面向?qū)ο蟮慕忉屝碗娔X程序設(shè)計(jì)語(yǔ)言,由荷蘭人GuidovanRossum于1989年發(fā)明,第一個(gè)公開發(fā)行版發(fā)行于1991年。Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNUGeneralPublicLicense)協(xié)議[2]

。Python語(yǔ)法簡(jiǎn)潔清晰,特色之一是強(qiáng)制用空白符(whitespace)作為語(yǔ)句縮進(jìn)。Python具有豐富和強(qiáng)大的庫(kù)。它常被昵稱為膠水語(yǔ)言,能夠把用其他語(yǔ)言制作的各種模塊〔尤其是C/C++〕很輕松地聯(lián)結(jié)在一起。常見(jiàn)的一種應(yīng)用情形是,使用Python快速生成程序的原型〔有時(shí)甚至是程序的最終界面〕,然后對(duì)其中[3]

有特別要求的部分,用更合適的語(yǔ)言改寫,比方3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫(kù)。需要注意的是在您使用擴(kuò)展類庫(kù)時(shí)可能需要考慮平臺(tái)問(wèn)題,某些可能不提供跨平臺(tái)的實(shí)現(xiàn)。

://baike.baidu/item/%E7%BC%96%E8%AF%91%E5%99%A8

編譯器

簡(jiǎn)單講,編譯器就是將“一種語(yǔ)言〔通常為高級(jí)語(yǔ)言〕”翻譯為“另一種語(yǔ)言〔通常為低級(jí)語(yǔ)言〕”的程序。一個(gè)現(xiàn)代編譯器的主要工作流程:源代碼(sourcecode)→預(yù)處理器(preprocessor)→編譯器(compiler)→目標(biāo)代碼(objectcode)→鏈接器(Linker)→可執(zhí)行程序(executables)高級(jí)電腦語(yǔ)言便于人編寫,閱讀交流,維護(hù)。機(jī)器語(yǔ)言是電腦能直接解讀、運(yùn)行的。編譯器將匯編或高級(jí)電腦語(yǔ)言源程序〔Sourceprogram〕作為輸入,翻譯成目標(biāo)語(yǔ)言〔Targetlanguage〕機(jī)器代碼的等價(jià)程序。源代碼一般為高級(jí)語(yǔ)言(High-levellanguage),

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論