版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8章驗證碼識別《Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解驗證的分類,能夠說出常見驗證碼的特點掌握字符驗證碼的識別方法,能夠使用ocr實現(xiàn)識別字符驗證碼的功能熟悉滑動拼圖驗證碼的識別方法,能夠使用Selenium實現(xiàn)識別滑動拼圖驗證碼的功能熟悉點選驗證碼的識別方法,能夠使用Selenium結(jié)合超級鷹平臺實現(xiàn)識別點選驗證碼的功能章節(jié)概述/Summary隨著大數(shù)據(jù)、機器學(xué)習(xí)、深度學(xué)習(xí)的興起,越來越多的企業(yè)通過分析數(shù)據(jù)探索新的發(fā)展道路,例如,內(nèi)容推薦、商品推薦、智慧城市等。雖然通過對大量數(shù)據(jù)進(jìn)行分析可以帶來一定的商業(yè)價值,但越來越多的網(wǎng)站為了保護(hù)網(wǎng)站中的數(shù)據(jù)不被網(wǎng)絡(luò)爬蟲采集,會在網(wǎng)站內(nèi)容中加入一些防爬蟲措施干擾網(wǎng)絡(luò)爬蟲,例如,加入驗證碼,此時網(wǎng)絡(luò)爬蟲如果想采集數(shù)據(jù),則需要對驗證碼進(jìn)行處理處理。目錄/Contents8.18.2驗證碼識別實踐項目:登錄黑馬頭條后臺管理系統(tǒng)驗證碼識別8.1驗證碼是指能夠區(qū)分用戶是計算機或人類的公共全自動程序,它因為能夠有效防止非人類的用戶惡意注冊網(wǎng)站,以及頻繁采集網(wǎng)頁數(shù)據(jù)等行為,所以成為了很多網(wǎng)站防爬蟲的首選方式。起初,驗證碼只是一張帶有隨機字符的圖片,用戶只需要輸入圖片中的字符即可完成驗證,但是這種驗證碼很容易被網(wǎng)絡(luò)爬蟲識別。為了提升驗證碼的識別難度,設(shè)計人員在原先驗證碼的基礎(chǔ)上添加了一些干擾元素,比如斜線、雜點等。8.1驗證碼識別掌握字符驗證碼的識別方法,能夠使用pytesseract實現(xiàn)識別字符驗證碼的功能學(xué)習(xí)目標(biāo)8.1.1字符驗證碼的識別8.1.1字符驗證碼的識別字符驗證碼是指將一串隨機產(chǎn)生的數(shù)字或字母生成一張圖片,圖片中包含一些干擾元素(如數(shù)條直線、數(shù)個圓點、扭曲文字、雜點背景),由用戶肉眼識別圖片中的數(shù)字或字母后輸入表單提交網(wǎng)站進(jìn)行驗證,一旦驗證成功后就可以使用某項功能。相比用戶行為的驗證碼,字符驗證碼的識別相對簡單一些。我們只需要通過字符識別技術(shù)獲取圖片中的字符即可。常見的字符識別技術(shù)是OCR技術(shù)(OpticalCharacter
Recognition,光學(xué)字符識別),為了能夠在Python程序中使用OCR技術(shù)識別字符驗證碼,我
們可以通過兩種方式進(jìn)行實現(xiàn):Tesseract-OCR(谷歌開發(fā)并開源的OCR引擎)和平臺OCR(如百度OCR、騰訊OCR)。8.1.1字符驗證碼的識別Tesseract-OCR是一個光學(xué)字符識別引擎,支持多種操作系統(tǒng),具有精準(zhǔn)度高、靈活性高等特點。它通過訓(xùn)練不僅可以識別出任何字體(只要字體的風(fēng)格保持不變即可),而且可以識別出任何Unicode字符。8.1.1字符驗證碼的識別步驟1步驟2步驟3步驟4訪問Tesseract-OCR下載頁面訪問Tesseract-OCR下載頁面,根據(jù)自己的計算機配置參數(shù)選擇相應(yīng)的安裝包下載,這里選擇下載Tesseract-OCR
v5.0.0。8.1.1字符驗證碼的識別步驟2步驟1步驟3步驟4進(jìn)入License
Agreement界面在Welcome
to
Tesseract-OCR
Setup界面中單擊Next按鈕進(jìn)入LicenseAgreement界面。8.1.1字符驗證碼的識別進(jìn)入Choose
Users界面在License
Agreement界面單擊I
Agree按鈕,進(jìn)入Choose
Users界面。步驟1步驟2步驟3步驟48.1.1字符驗證碼的識別步驟4步驟1步驟2步驟3進(jìn)入Choose
Components界面在Choose
User界面保持默認(rèn)配置,單擊Next按鈕,進(jìn)入Choose
Components界面。8.1.1字符驗證碼的識別步驟5步驟6步驟7步驟8進(jìn)入Choose
Install
Location界面在Choose
Users界面保持默認(rèn)配置,單擊Next按鈕,進(jìn)入Choose
InstallLocation界面。8.1.1字符驗證碼的識別步驟6步驟5步驟7步驟8進(jìn)入Choose
Start
Menu
Folder界面單擊Choose
Install
Location界面的Next按鈕,進(jìn)入Choose
Start
Menu
Folder界面。8.1.1字符驗證碼的識別進(jìn)入Installation
Complete界面單擊Choose
Start
Menu
Folder界面Next按鈕,進(jìn)入Installation
Complete界面。步驟5步驟6步驟7步驟88.1.1字符驗證碼的識別步驟8步驟5步驟6步驟7進(jìn)入Completing
Tesseract-OCR
Setup界面單擊Installation
Complete界面Next按鈕,進(jìn)入Completing
Tesseract-OCRSetup界面。8.1.1字符驗證碼的識別步驟9步驟10添加到環(huán)境變量Tesseract-OCR安裝完成之后,還需要將Tesseract-OCR的安裝目錄和語言包配置到環(huán)境變量中。8.1.1字符驗證碼的識別步驟9步驟10查看當(dāng)前Tesseract-OCR的版本號通過在命令行窗口中輸入tesseract-v命令,查看當(dāng)前Tesseract-OCR的版本號,以驗證環(huán)境變量是否配置成功。8.1.1字符驗證碼的識別為了能夠調(diào)用Tesseract-OCR引擎識別字符驗證碼,Python中提供了兩個庫pytesseract和Pillow,其中pytesseract是對Tesseract-OCR的一層封裝,它也可以單獨作為Tesseract-OCR引擎的調(diào)用腳本;Pillow是基于PIL庫的一個派生分支,如今已經(jīng)發(fā)展成為比PIL本身更具活力的圖像處理庫。8.1.1字符驗證碼的識別pytesseract和Pillow都是第三方庫,可以通過pip工具進(jìn)行安裝。pip
install
pytesseractpip
install
Pillow若要使用Tesseract-OCR識別字符驗證碼,一般分為以下幾個步驟。使用Pillow.Image模塊調(diào)用open()函數(shù)加載圖像文件,生成圖像對象。使用pytesseract庫調(diào)用image_to_string()函數(shù)對圖像對象進(jìn)行Tesseract-OCR識別,并將識別后的結(jié)果以字符串形式進(jìn)行返回。8.1.1字符驗證碼的識別使用pytesseract和Pillow庫識別字符驗證碼示例如下。from
PIL
import
Image#導(dǎo)入Pillow庫中的Image類from
pytesseract
import
pytesseractimage
=
Image.open("W549.png")text
=
pytesseract.image_to_string(image)print(text)8.1.1字符驗證碼的識別通常情況下,網(wǎng)頁上的字符驗證碼中存在許多干擾線和噪點,因此在未訓(xùn)練的情況下使用Tesseract-OCR的識別效果并不理想。這時可以使用百度OCR識別帶有一些干擾元素的字符驗證碼。在使用百度OCR之前,我們需要先在百度AI開放平臺注冊應(yīng)用。下面分別為大家介紹注冊應(yīng)用和使用百度OCR。8.1.1字符驗證碼的識別首先,使用百度賬號登錄百度AI開放平臺首頁,在該頁面頂部的菜單欄中選擇“開放能力”→“文字識別”→“通用文字識別”。8.1.1字符驗證碼的識別然后進(jìn)入通用文字識別頁面,單擊“通用文字識別”鏈接,進(jìn)入通用文字識別頁面,在該頁面中單擊“立即使用”按鈕進(jìn)入“百度智能云-管理中心”頁面。8.1.1字符驗證碼的識別最后,單擊“創(chuàng)建應(yīng)用”按鈕跳轉(zhuǎn)至創(chuàng)建新應(yīng)用頁面,在該頁面中根據(jù)要求填寫新應(yīng)用的必選項,包括應(yīng)用名稱、接口選擇、文字識別包名、應(yīng)用歸屬、應(yīng)用描述等。完成填寫后,單擊新應(yīng)用頁面底部的“立即創(chuàng)建”按鈕可以看到創(chuàng)建完畢的提示信息。8.1.1字符驗證碼的識別在使用百度OCR開發(fā)程序之前,我們需要查看平臺提供的API文檔。,具體步驟為在百度智能云-管理中心”頁面單擊API文檔→通用場景文字識別→通用文字識別(高精度版),跳轉(zhuǎn)至通用文字識別(高精度版)的API文檔頁面。8.1.1字符驗證碼的識別以一個字符驗證碼圖片為例,使用百度OCR識別字符驗證碼圖片。字符驗證碼圖片如下所示。8.1.1字符驗證碼的識別import
base64,requestsdef
graphic_verification_code(img_name):api_key="申請的API
Key"secret_key="申請的Secret
Key"host=f"/oauth/2.0/token?grant_type=client_"
\f"credentials&client_id={api_key}&client_secret={secret_key}"request_url
="/rest/2.0/ocr/v1/accurate_basic"f=open(img_name,"rb")#二進(jìn)制方式打開圖片文件img=base64.b64encode(f.read())使用Python和百度OCR識別指定的驗證碼圖片,具體代碼如下所示。params
=
{"image":
img}access_token
=
requests.get(host).json()["access_token"]request_url
=
request_url
+
"?access_token="
+access_tokenheaders
=
{"content-type":
"application/x-www-form-urlencoded"}response
=
requests.post(request_url,
data=params,headers=headers)if
response:print(response.json())if
name
==
"
main
":graphic_verification_code("dfn5.jpg")8.1.1字符驗證碼的識別熟悉滑動拼圖驗證碼的識別方法,能夠使用Selenium實現(xiàn)識別滑動拼圖驗證碼的功能學(xué)習(xí)目標(biāo)8.1.2滑動拼圖驗證碼的識別8.1.2滑動拼圖驗證碼的識別滑動拼圖驗證碼是一種很常見的行為驗證碼,用戶只需要滑動滑塊至正確距離后完成拼圖,松開滑塊后會自動進(jìn)入結(jié)果驗證流程,若驗證失敗,則滑塊回到起始位置;若驗證通過,則當(dāng)前頁面會出現(xiàn)相關(guān)的提示信息?;瑒悠磮D驗證碼主要由5部分組成,分別是摳圖、滑動、缺口、背景圖片、滑軌,其中摳圖和缺口的的形狀是隨機的,缺口的位置是隨機的,這意味著用戶滑動滑動的距離也是隨機的。8.1.2滑動拼圖驗證碼的識別Python中識別滑動拼圖驗證碼的實現(xiàn)思路一般分為5步。獲取包含缺口和不包含缺口的背景圖片計算滑塊的偏移量生成滑動軌跡使用Selenium模擬滑動軌跡驗證摳圖與缺口位置是否重合123458.1.2滑動拼圖驗證碼的識別熟悉點選驗證碼的識別方法,能夠使用Selenium結(jié)合超級鷹平臺實現(xiàn)識別點選驗證碼的功能學(xué)習(xí)目標(biāo)8.1.3點選驗證碼的識別點選驗證碼是根據(jù)驗證碼彈窗中的文字描述,按順序單擊圖片中與文字描述相符的文字完成驗證。8.1.3點選驗證碼的識別需要注意的是,識別點選驗證碼的第三方平臺有很多,在這里我們選擇的超級鷹僅用于本案例的演示,請大家謹(jǐn)慎購買或使用。注冊賬號截取驗證碼使用超級鷹識別單擊驗證碼文字注冊超級鷹賬號使用超級鷹識別點選驗證碼的文字截取點選驗證碼圖片使用Selenium單擊驗證碼中的文字8.1.3點選驗證碼的識別以極驗驗證碼官網(wǎng)的點選驗證碼為例,演示如何使用第三方平臺超級鷹和Selenium識別點選驗證碼。8.1.3點選驗證碼的識別首先瀏覽器中訪問超級鷹官網(wǎng)。8.1.3點選驗證碼的識別單擊“用戶注冊”按鈕進(jìn)行注冊,賬號注冊完成之后,可在用戶中心查看賬號信息,根據(jù)提示綁定相關(guān)信息便可領(lǐng)取1000題分。8.1.3點選驗證碼的識別在用戶中心頁面功能列表中選擇“軟件ID”打開軟件ID界面,單擊該界面上的“生成一個軟件ID”鏈接,會看到對接超級鷹平臺API需要使用的軟件KEY。8.1.3點選驗證碼的識別單擊下圖中的“點擊這里下載”鏈接,即可將保護(hù)SDK示例的壓縮包Chaojiying_Python.rar下載至本地。將Chaojiying_Python.rar壓縮包解壓縮后,可以看到chaojiying_Python文件夾包含了chaojiying.py文件,該文件封裝了識別驗證碼的功能。8.1.3點選驗證碼的識別在chaojiying.py文件中定義了一個Chaojiying類,該類中包含了3個方法,分別是
init
()、PostPic()和ReportError(),關(guān)于它們的介紹如下。
init
()方法用于初始化Chaojiying_Client類,該方法需要接收3個參數(shù)username、password和soft_id,分別表示超級鷹平臺的用戶名、密碼以及軟件ID。PostPic()方法用于將圖片對象和相關(guān)信息發(fā)送給超級鷹后臺進(jìn)行識別,再將識別的結(jié)果以JSON格式返回。該方法需要接收兩個參數(shù)im,codetype,分別表示圖片對象和驗證碼類型代號。ReportError()方法用于處理當(dāng)發(fā)生錯誤的時候進(jìn)行回調(diào),如果驗證碼識別錯誤,調(diào)用此方法會返回相應(yīng)題分。8.1.3點選驗證碼的識別由于Chaojiying類的PostPic()方法需要接收一個圖片對象,所以我們需要將極驗驗證碼官網(wǎng)的點選驗證碼下載到本地。這里我們可以使用Selenium訪問極驗驗證碼官網(wǎng),找到點選驗證碼后進(jìn)行截圖,如此就可以獲取點選驗證碼圖片。8.1.3點選驗證碼的識別在使用Selenium截取點選驗證碼時,需要將點選驗證碼的完整圖片進(jìn)行截取,查找點選驗證碼對應(yīng)的元素。8.1.3點選驗證碼的識別編寫代碼,使用Selenium按照上述步驟打開點選驗證碼彈框,并將點選驗證碼截圖保存到本地,運行上述代碼后,程序所在的目錄下生成一個yzm.png圖片。8.1.3點選驗證碼的識別獲取點選驗證碼圖片后,需要將該圖片發(fā)送到超級鷹后臺進(jìn)行識別,超級鷹平臺會將識別后的文字坐標(biāo)等信息以JSON格式進(jìn)行返回。超級鷹平臺識別點選驗證碼上4個文字后返回的結(jié)果示例如下。{"err_no":
0,
"err_str":
"OK",
"pic_id":
"1151511476469800104",
"pic_str":
"107,218|165,94|253,336|248,184",
"md5":"d9a30a1a11ec6f4e214d2448d7f36c10"}pic_str對應(yīng)的值‘107,218|165,94|253,336|248,184’是4個文字的坐標(biāo)信息。8.1.3點選驗證碼的識別定義一個dock_chaojiying()方法,在該方法中根據(jù)自己的賬號、密碼和軟件KEY對接超級鷹平臺,保存超級鷹平臺返回的JSON格式的數(shù)據(jù)。#對接超級鷹,填寫賬號、密碼、軟件iddef
dock_chaojiying(self):chaojiying=Chaojiying_Client("超級鷹賬號","超級鷹密碼","軟件ID")im=open("yzm.png","rb").read()#保存超級鷹平臺返回的JSON格式的數(shù)據(jù)
#提取文字坐標(biāo)信息#將坐標(biāo)形式轉(zhuǎn)換成[[x,y],[x,y]]result
=
chaojiying.PostPic(im,
9004)coordinates
=
result.get("pic_str").split("|")locations
=
[[int(number)
for
number
in
coordinate.split(",")]for
coordinate
in
coordinates]return
locations8.1.3點選驗證碼的識別有了驗證碼圖片上每個文字的坐標(biāo)信息之后,可以使用Selenium模擬用戶根據(jù)坐標(biāo)信息依次點擊文字的行為。def
simulated_click(self):self.get_image()img
=
WebDriverWait(self.driver,
10).until(EC.presence_of_element_located((By.CLASS_NAME,
"geetest_widget")))for
location
in
self.dock_chaojiying():ActionChains(self.driver).move_to_element_with_offset(img,location[0],location[1]).click().perform()self.driver.find_element_by_class_name("geetest_commit_tip").click()#點擊確認(rèn)按鈕time.sleep(3)#等待3s查看是否點擊成功
self.driver.quit()8.1.3點選驗證碼的識別在main語句中,創(chuàng)建ClickVerificationCode類的對象click_verification,并調(diào)用simulated_click()方法識別點選驗證碼。if
name
==
"
main
":click_verification
=
ClickVerificationCode()click_verification.simulated_click()8.1.3點選驗證碼的識別實踐項目:登錄黑馬頭條后臺管理系統(tǒng)8.2黑馬頭條后臺管理系統(tǒng)是傳智教育項目庫的動手實踐項目,該項目包含一個用戶登錄、首頁、用戶管理等多個模塊,其中用戶登錄模塊主要負(fù)責(zé)處理用戶登錄與驗證的邏輯,并通過一個滑動拼圖驗證碼辨別用戶行為。本項目使用Selenium實現(xiàn)登錄黑馬頭條后臺管理系統(tǒng)。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目需求黑馬頭條后臺管理系統(tǒng)的登錄流程如右圖所示。項目目標(biāo)8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目分析黑馬頭條后臺管理系統(tǒng)的登錄步驟如下所示。第1張圖是黑馬頭條后臺管理系統(tǒng)的用戶登錄窗口,該窗口的文本框中默認(rèn)填寫了用戶名和密碼,且登錄按鈕呈不可用狀態(tài);單擊用戶登錄窗口的“輸入用戶名點擊獲取驗證碼”按鈕,該按鈕下方又出現(xiàn)一個“點擊按鈕進(jìn)行驗證”按鈕;單擊“點擊按鈕進(jìn)行驗證”按鈕打開滑動拼圖驗證碼彈框,在該彈框中向右滑動滑塊,直到摳圖與缺口重合后松開滑塊,這時滑動拼圖驗證碼彈框自動關(guān)閉,并跳轉(zhuǎn)回用戶登錄窗口;在用戶登錄窗口中,“點擊按鈕進(jìn)行驗證”按鈕變?yōu)椤膀炞C成功”的提示信息,此時登錄按鈕呈可用狀態(tài);單擊用戶登錄窗口中的“登錄”按鈕進(jìn)入黑馬頭條后臺管理系統(tǒng)首頁。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)識別滑動拼圖驗證碼一般分為5步。項目分析獲取包含缺口和不包含缺口的背景圖片計算滑塊的偏移量生成滑動軌跡驗證摳圖與缺口位置是否重合使用Selenium模擬滑塊滑動8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目分析獲取包含缺口和不包含缺口的背景圖片當(dāng)用戶滑動滑塊時摳圖會跟隨滑塊一起移動,一旦摳圖與缺口的位置重合,便可以停止滑動滑塊。由此可知,滑塊的偏移量是跟缺口位置有關(guān)的。每張滑動拼圖驗證碼圖片中缺口所在的位置是隨機
的。為了能確定缺口的位置,我們可以獲取一張包含缺口的背景圖片和一張不包含缺口的背景圖片。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目分析計算滑塊的偏移量對比包含缺口和不包含缺口的背景圖片可知,缺口所在區(qū)域的顏色值存在一定的差距。因此,可以設(shè)定一個顏色值誤差范圍,一旦背景圖片中某個像素點的顏色值超過誤差范圍,就將該像素點的X值作為滑塊的偏移量。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目分析生成滑動軌跡由于滑動拼圖驗證碼會對滑塊的滑動軌跡進(jìn)行驗證,以辨別當(dāng)前用戶是否為非人類用戶,所以我們需要模擬用戶滑動滑塊的軌跡。為幫助開發(fā)人員生成模擬用戶滑動滑塊的軌跡,這里我們可以借用jquery.easing.js插件完成。jquery.easing.js是一款jQuery動畫效果插件,使用該插件可以實現(xiàn)豐富的動畫效果,包括直線勻速運動、變加速運動、緩沖等。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目分析使用Selenium模擬滑塊滑動在前面的步驟已經(jīng)得出滑塊偏移量和滑動軌跡,可以使用Selenium定位到滑塊所在的位置,按照生成的滑動軌跡滑動滑塊,并滑動至偏移量指定的距離。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目分析驗證摳圖與缺口位置是否重合由于用戶未通過驗證前,登錄窗口中的登錄按鈕為不可用狀態(tài);用戶通過驗證后,登錄按鈕變?yōu)榭捎脿顟B(tài),所以我們可以將登錄按鈕的狀態(tài)作為判斷驗證是否通過的標(biāo)志,登錄按鈕可用說明用戶通過驗證,這時我們單擊登錄按鈕可以進(jìn)入黑馬頭條后臺管理系統(tǒng)的首頁頁面。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目實現(xiàn)獲取包含缺口和不包含缺口的背景圖片導(dǎo)入程序中需要用到的所有模塊,定義一個網(wǎng)絡(luò)爬蟲類HeiMaTouTiao,在該類的構(gòu)造函數(shù)中定義兩個分別表示URL地址、瀏覽器驅(qū)動器的屬性url和driver,以及調(diào)用
maximize_window()方法設(shè)置瀏覽器窗口最大化。在HeiMaTouTiao類中定義login()方法,在該方法中分別定位到“輸入用戶名點擊獲取驗證碼”和“點擊按鈕進(jìn)行驗證”按鈕對應(yīng)的元素,待按鈕加載完成后執(zhí)行點擊按鈕操作。在main語句中,創(chuàng)建一個HeiMaTouTiao類的對象,并調(diào)用login()方法進(jìn)行登錄操作。8.2實踐項目:登錄黑馬頭條后臺管理系統(tǒng)項目實現(xiàn)獲取包含缺口
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水下風(fēng)電場結(jié)構(gòu)設(shè)計-洞察分析
- 二零二五版高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)國有土地使用權(quán)出讓合同2篇
- 2025年度大廈物業(yè)維修資金管理與使用合同4篇
- 年度回轉(zhuǎn)窯式垃圾焚燒爐戰(zhàn)略市場規(guī)劃報告
- 二零二五版民營醫(yī)院營養(yǎng)科營養(yǎng)師勞動合同4篇
- 2025年度個人快遞服務(wù)與配送合同范本4篇
- 2025年度大理石石材加工與裝修設(shè)計合同范本4篇
- 二零二五年高等教育機構(gòu)外籍教師工作合同及學(xué)術(shù)發(fā)展支持4篇
- 2025年度模板木枋產(chǎn)業(yè)鏈上下游協(xié)同發(fā)展合同4篇
- 二零二五版重型機械設(shè)備運輸合同6篇
- 部編版六年級下冊道德與法治全冊教案教學(xué)設(shè)計
- 【高空拋物侵權(quán)責(zé)任規(guī)定存在的問題及優(yōu)化建議7100字(論文)】
- 二年級數(shù)學(xué)上冊100道口算題大全 (每日一套共26套)
- 物流無人機垂直起降場選址與建設(shè)規(guī)范
- 肺炎臨床路徑
- 外科手術(shù)鋪巾順序
- 創(chuàng)新者的窘境讀書課件
- 聚焦任務(wù)的學(xué)習(xí)設(shè)計作業(yè)改革新視角
- 移動商務(wù)內(nèi)容運營(吳洪貴)任務(wù)三 APP的品牌建立與價值提供
- 電子競技范文10篇
- 食堂服務(wù)質(zhì)量控制方案與保障措施
評論
0/150
提交評論