




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第六章豆瓣電影排行榜數(shù)據(jù)爬取與預(yù)處理“Python數(shù)據(jù)采集與預(yù)處理目錄CONTENTS豆瓣電影榜數(shù)據(jù)采集目標(biāo)6.1豆瓣網(wǎng)頁結(jié)構(gòu)分析6.2創(chuàng)建爬蟲6.3數(shù)據(jù)預(yù)處理6.4數(shù)據(jù)可視化6.5學(xué)習(xí)目標(biāo)掌握網(wǎng)頁結(jié)構(gòu)分析方法掌握對網(wǎng)絡(luò)文本數(shù)據(jù)的爬取操作理解網(wǎng)絡(luò)爬蟲請求與相應(yīng)原理掌握對網(wǎng)絡(luò)采集數(shù)據(jù)的預(yù)處理方法掌握對文本數(shù)據(jù)可視化的流程豆瓣電影榜數(shù)據(jù)采集目標(biāo)016.1豆瓣電影榜數(shù)據(jù)采集目標(biāo)采集目標(biāo)在本節(jié)中,將會根據(jù)豆瓣電影Top250的榜單,構(gòu)造爬取的起始頁面地址,采集每一頁的電影排行信息,具體包括每部電影的詳情鏈接、影片圖片、影片片名、影片評分、評價人數(shù)、影片概況、相關(guān)信息。6.1豆瓣電影榜數(shù)據(jù)采集目標(biāo)采集目標(biāo)可以很容易的發(fā)現(xiàn),所需要的信息基本上都集中在圖6-2所示紅色方框所組成的容器結(jié)構(gòu)中,通過后面的結(jié)構(gòu)分析可以發(fā)現(xiàn),每一部電影的信息都被分開放在<li>標(biāo)簽的結(jié)構(gòu)中,因此,進(jìn)一步的需求是爬取相應(yīng)<li>標(biāo)簽中的內(nèi)容,實現(xiàn)從采集到的整塊內(nèi)容中提取出需要的具體信息。準(zhǔn)備工作在準(zhǔn)備爬取數(shù)據(jù)之前,請確保裝已經(jīng)安裝好了Re庫、BeautifulSoup庫、Urllib庫、Xlwt庫。如果沒有安裝好,可以參考第二章數(shù)據(jù)采集與存儲的內(nèi)容。豆瓣網(wǎng)頁結(jié)構(gòu)分析026.2.1宏觀整體頁面分析從宏觀上整體來觀察爬取的起始目標(biāo)頁面。將滾輪滑到頁面底部,如圖6-3所示,可以發(fā)現(xiàn),一頁共有25條電影介紹,250條記錄一共被分成了10頁。一般對于翻頁的實現(xiàn)有兩種方法:①根據(jù)每頁的電影信息個數(shù)和每一頁URL的變化,來構(gòu)造出新的URL地址,從而進(jìn)行翻頁操作。②找到頁面底端的翻頁數(shù)字按鈕所在的HTML標(biāo)簽,根據(jù)標(biāo)簽中包含的href鏈接,來實現(xiàn)跳轉(zhuǎn)到下一頁。6.2.1宏觀整體頁面分析從宏觀上整體來觀察爬取的起始目標(biāo)頁面。將滾輪滑到頁面底部,如圖6-3所示,可以發(fā)現(xiàn),一頁共有25條電影介紹,250條記錄一共被分成了10頁。一般對于翻頁的實現(xiàn)有兩種方法:①根據(jù)每頁的電影信息個數(shù)和每一頁URL的變化,來構(gòu)造出新的URL地址,從而進(jìn)行翻頁操作。②找到頁面底端的翻頁數(shù)字按鈕所在的HTML標(biāo)簽,根據(jù)標(biāo)簽中包含的href鏈接,來實現(xiàn)跳轉(zhuǎn)到下一頁。本章使用第一種方法來進(jìn)行翻頁操作6.2.1宏觀整體頁面分析最后,在完成翻頁操作后便可以思考在每一頁上該如何爬取信息,也就是從宏觀開始逐漸走向微觀。通過觀察頁面可以發(fā)現(xiàn),每一條電影信息條目都是整齊且有規(guī)律的垂直排列在一起,通過開發(fā)者控制臺的元素選取可以尋找它們在HTML中的擺放規(guī)律,從而達(dá)到自動篩選和爬取每一個電影條目。6.2.2微觀具體信息爬取外層以排行第一的電影“肖申克的救贖”為例,我們選中它可以發(fā)現(xiàn)其整個電影條目都存在于一個<li>標(biāo)簽下,而且與其并列的還有多個<li>標(biāo)簽,這些未展開的標(biāo)簽中包含的就是按照名次順序排列的其他電影條目。如圖6-7所示,點開前兩個<li>標(biāo)簽,可以發(fā)現(xiàn)剛好對應(yīng)的就是前兩名“肖申克的救贖”和“霸王別姬”這兩部電影。6.2.2微觀具體信息爬取內(nèi)層在準(zhǔn)確的找得到所需信息的具體所在位置后,本案例的爬取思路已經(jīng)很明確了:宏觀上爬完每一頁需要自動翻頁,并且需要定位到存放各個電影條目的<li>標(biāo)簽;微觀上需要以<li>標(biāo)簽為單位遍歷爬取,在每一個<li>標(biāo)簽下抽取出每一個條目的具體信息。創(chuàng)建爬蟲03爬蟲流程04030201保存數(shù)據(jù)在6.3.3提取數(shù)據(jù)中已經(jīng)知道datalist是一個二維列表,根據(jù)datalist中的數(shù)據(jù)存放結(jié)構(gòu)進(jìn)一步便可以進(jìn)行數(shù)據(jù)保存的工作。提取數(shù)據(jù)獲取到了網(wǎng)頁內(nèi)容之后,就可以完成有用信息提取工作,提取出最終需要的具體數(shù)據(jù)內(nèi)容。請求與響應(yīng)在準(zhǔn)備好URL之后,便需要進(jìn)行請求發(fā)送以及獲取響應(yīng)數(shù)據(jù)。請求及相應(yīng)操作都使用一個askURL()函數(shù)來實現(xiàn)。準(zhǔn)備url爬蟲的第一步便是構(gòu)造出爬取目標(biāo)的起始URL,找到了有效的目標(biāo),繼而才能深入的取抓取想要的數(shù)據(jù)。6.3.1準(zhǔn)備URL6.3.1準(zhǔn)備URL導(dǎo)入包和設(shè)計主函數(shù)在主函數(shù)中定義出起始URL地址baseurl:/top250?start=。然后,將baseurl作為參數(shù)傳入getData()函數(shù)中,之后在getData()函數(shù)中將實現(xiàn)start參數(shù)從零開始的自增,從而實現(xiàn)翻頁。最后,getData()函數(shù)將獲取到的每一頁數(shù)據(jù)作為一個整體作為返回值返回。這里將完整的主函數(shù)代碼展示在左方。importrefrombs4importBeautifulSoupimporturllibimportxlwtif__name__=="__main__":baseurl=/top250?start=#爬取網(wǎng)頁datalist=getData(baseurl)#保存路徑savepath="./豆瓣電影Top250.xls"#保存數(shù)據(jù)saveData(datalist,savepath)6.3.1準(zhǔn)備URL在getData()函數(shù)中將會進(jìn)一步構(gòu)造URL,再將構(gòu)造好的URL傳遞給調(diào)用的askURL()函數(shù)中,實現(xiàn)網(wǎng)頁數(shù)據(jù)的獲取。getData()函數(shù)采用一個for循環(huán)來遍歷10次,每一次都爬取一頁內(nèi)容的數(shù)據(jù),在每次循環(huán)的開始,使用字符串拼接的方式來更新出下一頁的URL地址,實現(xiàn)翻頁操作。foriinrange(0,10):
url=baseurl+str(i*25) html=askURL(url) ………………6.3.2請求與響應(yīng)askURL()函數(shù)首先,定義一個字典header,其中只包含用戶頭信息User-Agent。接著,將請求對象req傳入urlopen()函數(shù)中,進(jìn)行請求發(fā)送操作,得到一個response響應(yīng)對象。最后,使用read()函數(shù)來讀取相應(yīng)內(nèi)容,并且按照“UTF-8”的形式來進(jìn)行解碼,將讀取到的內(nèi)容賦值給字符串html。整個askURL()函數(shù)的完整代碼如右所示。#得到一個指定URL網(wǎng)頁的內(nèi)容defaskURL(url):#設(shè)置請求頭信息
header={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)""Chrome/85.0.4183.83Safari/537.36Edg/85.0.564.44"}#構(gòu)造請求頭對象
req=urllib.request.Request(url=url,headers=header)html=""6.3.2請求與響應(yīng)askURL()函數(shù)在askURL()函數(shù)中,將最終讀取到的響應(yīng)內(nèi)容的字符串形式作為返回值返回,并且針對于獲取響應(yīng)這一步驟使用了異常捕獲操作,對異常信息進(jìn)行打印。try:#發(fā)送請求獲取響應(yīng)
response=urllib.request.urlopen(req)html=response.read().decode("utf-8")#print(html)
#捕獲異常信息
excepturllib.error.URLErrorase:ifhasattr(e,"code"):print(e.code)ifhasattr(e,"reason"):print(e.reason)returnhtml6.3.3提取數(shù)據(jù)正則表達(dá)目前我們已經(jīng)知道,每一條電影信息都是按照一定的規(guī)律和結(jié)構(gòu)來顯示和排列的。同樣的,在網(wǎng)頁源代碼中也是如此編排,所以,可以使用某種規(guī)范的格式來提取想要的數(shù)據(jù),因此正則表達(dá)式開始發(fā)揮其作用。6.3.3提取數(shù)據(jù)#影片詳情鏈接findlink=pile(r'<ahref="(.*?)">')#影片圖片findImgSrc=pile(r'<img.*src="(.*?)"',re.S)#影片片名findTitle=pile(r'spanclass="title">(.*)</span>')#影片評分findRating=pile(r'<spanclass="rating_num"property="v:average">(.*)</span>')#評價人數(shù)findJudge=pile(r'<span>(\d*)人評價</span>')#概況findInq=pile(r'<spanclass="inq">(.*)</span>')#影片相關(guān)內(nèi)容findBD=pile(r'<pclass="">(.*?)</p>',re.S)6.3.3提取數(shù)據(jù)(1)對于影片詳情鏈接,在圖中可以看到,其包含在<a>標(biāo)簽中的href屬性中,于是我們鎖定了所需信息條目的上下文。而針對所需提取的內(nèi)容,采用(.*?)的形式來獲取,括號內(nèi)是目標(biāo)內(nèi)容,“.*?”表示0個或多個任意字符出現(xiàn)0次或1次,也就是說要提取出上下文之間的所有字符內(nèi)容。pile()函數(shù)將正則表達(dá)式的字符串形式編譯為一個Pattern對象返回給findlink,通過Pattern對象提供的一系列方法,可以對文本進(jìn)行相應(yīng)的匹配查找。(2)同樣找到圖片鏈接的上下文信息,發(fā)現(xiàn)其在img標(biāo)簽的src屬性中,而在img到src之間有很長一串上下文字符,可以采用“.*”的方式來替代之間的字符,以簡化書寫。此外,在向pile()函數(shù)中傳參的時候,新加入了re.S參數(shù),其作用是將點“.”的作用擴(kuò)展到整個字符串,包括“\n”。正則表達(dá)式中,“.”的作用是匹配除“\n”以外的任何字符,也就是說,它是在一行中進(jìn)行匹配。這里的“行”是以“\n”進(jìn)行區(qū)分的。如果不使用re.S參數(shù),則只在每一行內(nèi)進(jìn)行匹配,如果一行沒有,就換下一行重新開始,不會跨行。而使用re.S參數(shù)以后,正則表達(dá)式會將這個字符串作為一個整體,將“\n”當(dāng)做一個普通的字符加入到這個字符串中,在整體中進(jìn)行匹配。(5)評價人數(shù)正則書寫時,由于只需要提取人數(shù)數(shù)字,所以將數(shù)字后的“人評價”這三個漢字也作為上下文的一部分顯式的書寫出來,只提取前面的數(shù)字。6.3.3提取數(shù)據(jù)編寫getData()外層循環(huán)首先,如前面6.3.1準(zhǔn)備URL小節(jié)中所述,在函數(shù)中用一個for循環(huán)實現(xiàn)翻頁操作,每循環(huán)一次得到一個指定url網(wǎng)頁的內(nèi)容;其次,將得到的html網(wǎng)頁字符串內(nèi)容使用BeautifulSoup(html,“html.parser”)來創(chuàng)建一個BeautifulSoup對象,其中html.parser是我們所指定的解析器;最后就可以使用soup.find_all()函數(shù)在該BeautifulSoup對象中查找符合要求的內(nèi)容,形成列表,進(jìn)而使用正則表達(dá)式來提取相關(guān)內(nèi)容。該部分代碼如下所示:#爬取網(wǎng)頁defgetData(baseurl):datalist=[]foriinrange(0,10):url=baseurl+str(i*25)html=askURL(url)
#逐一解析數(shù)據(jù)
soup=BeautifulSoup(html,"html.parser")#查找符合要求的內(nèi)容,形成列表
foriteminsoup.find_all('div',class_="item"):①……6.3.3提取數(shù)據(jù)編寫getData()外層循環(huán)在上面代碼①處的循環(huán)中,使用soup.find_all(‘div’,class_=“item”)來提取出soup中所有div標(biāo)簽中class屬性為item的內(nèi)容,并且是返回所有匹配到的結(jié)果(如果只是soup.find()函數(shù),則只返回查找到的第一個結(jié)果),其將所有匹配到的bs4.element.Tag對象拼接為一個列表,之后將在循環(huán)中對列表中的元素進(jìn)行遍歷。如圖所示,可以看到class屬性為item的標(biāo)簽內(nèi)容有多個,而且每一個<divclass=”item”>的內(nèi)容即為一個電影條目,所以該匹配結(jié)果列表即為所有電影條目的集合,其中每一個元素即為一個電影條目。接下來,在for循環(huán)中遍歷每一個匹配到的結(jié)果,也就是每一個電影條目信息,從中使用前面寫好的正則表達(dá)式來提取出具體的每一個信息。6.3.3提取數(shù)據(jù)編寫getData()內(nèi)層循環(huán)定義一個空列表data,用來保存每次循環(huán)所匹配到的結(jié)果,并且將之前在soup中查找到的bs4.element.Tag對象轉(zhuǎn)化為字符串,以方便后面的正則匹配。有了data與轉(zhuǎn)型后的item后,便可以開始進(jìn)行正則匹配。使用re模塊中的findall()函數(shù)來進(jìn)行匹配,其第一個參數(shù)findlink是影片詳情的正則表達(dá)式,第二個參數(shù)item是要匹配的內(nèi)容,函數(shù)匹配到的結(jié)果會是一個字符串?dāng)?shù)組。findall()函數(shù)返回item中所有與正則pattern匹配的全部字符串,以數(shù)組的形式返回,但我們只需要取返回數(shù)組中的第一個結(jié)果元素。data=[]item=str(item)#影片詳情的鏈接link=re.findall(findlink,item)[0]data.append(link)#圖片詳情的鏈接imgSrc=re.findall(findImgSrc,item)[0]data.append(imgSrc)6.3.3提取數(shù)據(jù)編寫getData()內(nèi)層循環(huán)接下來進(jìn)行對影片片名findTitle的提取。通過觀察可以發(fā)現(xiàn),影片片名通常不止一個,還有除了中文名的英文原名,以及其他地區(qū)對該電影的不同中文翻譯。這里我們只提取屬性為title的大陸中文譯名和英文原名。在書寫代碼的時候,需要將中文名與英文名分開保存,于是需要使用if語句來判斷匹配結(jié)果中的元素個數(shù),如果title的長度為2,這說明有中英兩個片名,如果title的長度為1,則說明只有一個中文名,但此時仍需要將英文名的位置空出,用空格占位即可,以此來保證片名的存儲格式相同。此外在匹配到的英文名內(nèi)容中,經(jīng)常會有“/”這個特殊字符,使用replace()函數(shù)將其替換去掉即可。#影片片名titles=re.findall(findTitle,item)#判斷是否有英文名iflen(titles)==2:ctitle=titles[0]data.append(ctitle)#去掉特殊字符otitle=titles[1].replace("/","")data.append(otitle)else:data.append(titles[0])#只有一個中文名的時候,將英文名的位置用空格占位data.append("")6.3.3提取數(shù)據(jù)編寫getData()內(nèi)層循環(huán)繼續(xù)對影片評分findRating和影片評價人數(shù)findJudge以及影片概況finInq進(jìn)行匹配。同理,取數(shù)組第一個元素內(nèi)容。在影片概況匹配時,將句末句號去掉。#影片評分rating=re.findall(findRating,item)[0]data.append(rating)#評價人數(shù)judgeNum=re.findall(findJudge,item)[0]data.append(judgeNum)#影片概況inq=re.findall(findInq,item)iflen(inq)!=0:#去掉句號
inq=inq[0].replace("。","")data.append(inq)else:#如果沒有一句話概況,空格占位,保持格式一致
data.append("")6.3.3提取數(shù)據(jù)編寫getData()內(nèi)層循環(huán)最后,對影片相關(guān)內(nèi)容findBD進(jìn)行匹配。使用finall()函數(shù)提取出所需要的內(nèi)容,但將得到的bd中內(nèi)容輸出后可以看到,目前所提取出的內(nèi)容中有很多空格和“/”字符以及<br/>換行符,這些都是不需要的,于是采用re模塊中的sub()函數(shù)來進(jìn)行替換。sub()函數(shù)常用的參數(shù)為前三個。第一個參數(shù)為正則中的模式字符串,也就是我們想要替換的內(nèi)容;第二個參數(shù)為想要替換成的字符串,也可以是個函數(shù);第三個參數(shù)為表示要被處理(查找替換)的原始字符串。在去掉<br/>換行符時需要注意,我們使用了正則表達(dá)“<br(\s+)?/>(\s+)?”來進(jìn)行替換,其中的“(\s+)?”表示匹配一個或多個出現(xiàn)了0次或1次的空白字符,“\s”表示匹配任意空白字符。這樣做的目的是防止<br/>標(biāo)簽中或者后面出現(xiàn)空格而導(dǎo)致某些換行符無法匹配。6.3.3提取數(shù)據(jù)#影片相關(guān)內(nèi)容bd=re.findall(findBD,item)[0]#去掉<br/>換行符bd=re.sub('<br(\s+)?/>(\s+)?',"",bd)#去掉/bd=re.sub('/',"",bd)#去掉前后文中的空格data.append(bd.strip())datalist.append(data)至此,單個電影條目的信息提取工作都已經(jīng)完成,每次循環(huán)都會將一個處理好的電影條目信息存儲在data列表中,在循環(huán)末尾,我們將data作為一個整體再次存放到getData()函數(shù)開頭時定義的datalist列表中,這樣在datalist列表中便分門別類的存儲了每一個電影條目的各類信息。將datalist作為getData(baseurl)函數(shù)的返回值返回后,就可以在datalist的基礎(chǔ)上進(jìn)行數(shù)據(jù)保存的工作了。6.3.4保存數(shù)據(jù)在6.3.3提取數(shù)據(jù)中已經(jīng)知道datalist是一個二維列表,根據(jù)datalist中的數(shù)據(jù)存放結(jié)構(gòu)進(jìn)一步便可以進(jìn)行數(shù)據(jù)保存的工作。通過saveData(datalist,savepath)函數(shù)來將數(shù)據(jù)保存到本地,在該函數(shù)中使用到了Xlwt庫,它是一個操作Excel的擴(kuò)展工具。通過這個三方庫的使用,可以很容易的對Excel進(jìn)行一系列的創(chuàng)建、設(shè)置、保存等操作,例如其可以創(chuàng)建表單、寫入指定單元格、指定單元格樣式等人工實現(xiàn)的功能,在Excel中常用的功能,該擴(kuò)展包都可以實現(xiàn),達(dá)到了Excel工作自動化的目標(biāo)。此外Xlwt庫主要用于對Excel進(jìn)行編輯,其只能用于寫Excel,當(dāng)需要讀取Excel內(nèi)容的時候則需要使用Xlrd模塊,其用于讀取Excel中的數(shù)據(jù),兩個庫相互配套使用。存儲數(shù)據(jù)為.xls文件6.3.4保存數(shù)據(jù)defsaveData(datalist,savepath):#創(chuàng)建一個Workbook對象,并設(shè)置編碼
book=xlwt.Workbook(encoding="utf-8",style_compression=0)#創(chuàng)建一個worksheetsheet=book.add_sheet('豆瓣電影Top250',cell_overwrite_ok=True)#設(shè)置每列列名
col=("電影詳情連接","圖片鏈接","影片中文名","影片外國名","評分","評價數(shù)","概況","相關(guān)信息")foriinrange(0,8):sheet.write(0,i,col[i])foriinrange(0,250):#外層循環(huán)定位行print("第%d條"%i)data=datalist[i]forjinrange(0,8):#內(nèi)層循環(huán),定位列sheet.write(i+1,j,data[j])book.save(savepath)數(shù)據(jù)預(yù)處理04#導(dǎo)入包importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt6.4數(shù)據(jù)預(yù)處理導(dǎo)入所需包#讀取本地數(shù)據(jù)file='豆瓣電影Top250.xls'temp=pd.read_excel(file)temp.head(10)讀取數(shù)據(jù)#數(shù)據(jù)探索temp.shape()數(shù)據(jù)探索6.4數(shù)據(jù)預(yù)處理數(shù)據(jù)探索info()函數(shù)數(shù)據(jù)探索describe()函數(shù)讀取數(shù)據(jù)#統(tǒng)計數(shù)據(jù)缺失值temp.isnull().sum()6.4數(shù)據(jù)預(yù)處理數(shù)據(jù)缺失值檢測#統(tǒng)計重復(fù)值temp.duplicated().sum()重復(fù)值檢測#屬性規(guī)約data=temp[['影片中文名','評分','評價數(shù)','概況']]異常值檢測和屬性規(guī)約6.4數(shù)據(jù)預(yù)處理異常值檢測和屬性規(guī)約數(shù)據(jù)缺失值檢測#評價人數(shù)排序data.sort_values(by='評價數(shù)',ascending=False)6.4數(shù)據(jù)預(yù)處理數(shù)據(jù)排序#根據(jù)評分這一字段進(jìn)行分組group=data.groupby("評分")foriinlist(group):print(i)group_count=group.count()group_count.sort_index(inplace=True)分組聚合6.4數(shù)據(jù)預(yù)處理數(shù)據(jù)排序使用sort_value()函數(shù)對“評價數(shù)”這一列排序,并指定了按照降序排列,該函數(shù)默認(rèn)是升序。分組聚合通過count()函數(shù)則可以對每一個分組統(tǒng)計其中的條目個數(shù),并且使用sort_index()函數(shù)對索引進(jìn)行排序,讓分?jǐn)?shù)從上至下依次遞增。數(shù)據(jù)可視化056.5數(shù)據(jù)可視化#設(shè)置繪圖顯示中文字體plt.rcParams['font.sans-serif']=['MicrosoftYaHei']#對數(shù)據(jù)取步長x=data.iloc[::4,0]y=data.iloc[::4,2]#設(shè)置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人房屋售房合同樣本
- 住宅小區(qū)車位轉(zhuǎn)讓合同樣本
- 個人專利咨詢合同樣本
- 仿石漆經(jīng)銷合同標(biāo)準(zhǔn)文本
- 公司公積金合同樣本
- 共建單位掛牌合同樣本
- 專業(yè)版?zhèn)€人合作合同樣本
- 2025臨時買賣合同范本
- 書店入股合同標(biāo)準(zhǔn)文本
- 入股個體酒吧合同標(biāo)準(zhǔn)文本
- 雷鋒叔叔你在哪里教學(xué)反思
- 軟件詳細(xì)設(shè)計說明書(例)
- 鋼拱橋?qū)m椀跹b方案終稿
- 24式太極拳教案(1~4課)
- 哈薩克斯坦鐵路車站代碼
- 產(chǎn)業(yè)經(jīng)濟(jì)學(xué)的課后復(fù)習(xí)答案
- 中國綠色經(jīng)濟(jì)發(fā)展之路(PPT-37張)課件
- 客房控制系統(tǒng)——RCU系統(tǒng)培訓(xùn)PPT通用通用課件
- 履帶式液壓挖掘機(jī)挖掘機(jī)構(gòu)設(shè)計
- 川崎病診治指南最新ppt課件
- (會議紀(jì)要(2011)第29期)河南煤業(yè)化工集團(tuán)有限責(zé)任公司會議紀(jì)要
評論
0/150
提交評論