版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、網(wǎng)絡(luò)編程的目的是直接或間接地通過(guò)網(wǎng)絡(luò)協(xié)議與其他計(jì)算機(jī)進(jìn)行通信。本章將介紹Python網(wǎng)絡(luò)通信基礎(chǔ)及其網(wǎng)絡(luò)應(yīng)用。主要介紹Python網(wǎng)絡(luò)應(yīng)用相關(guān)的主要模塊、類及其使用方法。Python支持TCP和UDP協(xié)議族。TCP用于網(wǎng)絡(luò)的可靠的流式輸入/輸出。UDP支持更簡(jiǎn)單的、快速的、點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)報(bào)模式。第12章 網(wǎng)絡(luò)與爬蟲學(xué)習(xí)重點(diǎn)或難點(diǎn): 網(wǎng)絡(luò)通信基礎(chǔ) Socket編程 電子郵件收發(fā) 網(wǎng)絡(luò)爬蟲學(xué)習(xí)本章后將能了解到QQ、收發(fā)郵件等Internet應(yīng)用軟件的實(shí)現(xiàn)原理,并有能力自己來(lái)嘗試編寫有類似功能的網(wǎng)絡(luò)應(yīng)用軟件。第12章 網(wǎng)絡(luò)與爬蟲12.1 網(wǎng)絡(luò)基礎(chǔ)知識(shí)12.2 Socket編程12.3 電子郵件12.4
2、 urllib爬蟲模塊第12章 網(wǎng)絡(luò)與爬蟲計(jì)算機(jī)網(wǎng)絡(luò)是指通過(guò)各種通信設(shè)備連接起來(lái)的、支持特定網(wǎng)絡(luò)通信協(xié)議的、許許多多的計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的集合。12.1 網(wǎng)絡(luò)基礎(chǔ)知識(shí)IP地址是計(jì)算機(jī)網(wǎng)絡(luò)中任意一臺(tái)計(jì)算機(jī)地址的唯一標(biāo)識(shí)。域名地址是計(jì)算機(jī)網(wǎng)絡(luò)中一臺(tái)主機(jī)的標(biāo)識(shí)名,也可以看做是IP地址的助記名。 端口是為了在一臺(tái)主機(jī)上標(biāo)識(shí)多個(gè)進(jìn)程而采取的一種手段。12.1 網(wǎng)絡(luò)基礎(chǔ)知識(shí)知道了網(wǎng)絡(luò)中某一臺(tái)主機(jī)的IP地址,就可以定位這臺(tái)計(jì)算機(jī)。通過(guò)這種地址標(biāo)識(shí),網(wǎng)絡(luò)中的計(jì)算機(jī)可以互相定位和通信。目前,IP地址有兩種格式,即IPV4格式和IPV6格式。1)IPV4是由4個(gè)字節(jié)數(shù)組成,中間以小數(shù)點(diǎn)分隔。譬如:。2)IPV6是
3、由16個(gè)字節(jié)組成,中間以冒號(hào)分隔。譬如:AD80:0000:0000:0000:ABAA:0000:00C2:0002 是一個(gè)合法的IPv6地址。在Internet上,一個(gè)域名地址可以有多個(gè)IP地址與之相對(duì)應(yīng),一個(gè)IP地址也可以對(duì)應(yīng)多個(gè)域名。通過(guò)主機(jī)名到IP地址的解析,可以由主機(jī)名得到對(duì)應(yīng)的IP地址。在訪問(wèn)網(wǎng)上資源時(shí),一般只需記住服務(wù)器的主機(jī)名就可以了。因?yàn)榫W(wǎng)絡(luò)中的域名解析服務(wù)器可以根據(jù)主機(jī)名查出對(duì)應(yīng)的IP地址。有了服務(wù)器的IP地址,就可以訪問(wèn)這個(gè)網(wǎng)站了。一臺(tái)主機(jī)上允許有多個(gè)進(jìn)程,這些進(jìn)程都可以和網(wǎng)絡(luò)上的其他計(jì)算機(jī)進(jìn)行通信。更準(zhǔn)確地說(shuō),網(wǎng)絡(luò)通信的主體不是主機(jī),而是主機(jī)中運(yùn)行的進(jìn)程。主機(jī)名(或I
4、P地址)和端口的組合能唯一確定網(wǎng)絡(luò)通信的主體進(jìn)程。端口(port)是網(wǎng)絡(luò)通信時(shí)同一主機(jī)上的不同進(jìn)程的標(biāo)識(shí)。12.1 網(wǎng)絡(luò)基礎(chǔ)知識(shí)網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個(gè)設(shè)備(計(jì)算機(jī))的程序,這些設(shè)備都通過(guò)網(wǎng)絡(luò)連接起來(lái)。網(wǎng)絡(luò)連接中要使用到的網(wǎng)絡(luò)協(xié)議:(1)TCP(Transfer Control Protocol的簡(jiǎn)稱)傳輸控制協(xié)議,是一種面向連接的、可以提供可靠傳輸?shù)膮f(xié)議。使用TCP協(xié)議傳輸數(shù)據(jù),接收端得到的是一個(gè)和發(fā)送端發(fā)出的完全一樣的數(shù)據(jù)流。通常用于互聯(lián)網(wǎng)協(xié)議,被稱TCP/IP。(2)UDP(User Datagram Protocol的簡(jiǎn)稱)用戶數(shù)據(jù)報(bào)協(xié)議,是一種無(wú)連接的協(xié)議,它傳輸?shù)氖且环N獨(dú)立的數(shù)據(jù)
5、報(bào)(Datagram)。每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完整的源地址或目的地址。12.1 網(wǎng)絡(luò)基礎(chǔ)知識(shí)TCP協(xié)議UDP協(xié)議必須建立發(fā)送方和接收方連接無(wú)大小限制有大小限制不可靠的協(xié)議無(wú)須建立發(fā)送方和接收方連接可靠的協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)技術(shù)(1)URL編程技術(shù):URL表示了Internet上某個(gè)資源的地址。通過(guò)URL標(biāo)識(shí),可以直接使用各種通信協(xié)議獲取遠(yuǎn)端計(jì)算機(jī)上的資源信息,方便快捷地開發(fā)Internet應(yīng)用程序。(2)TCP編程技術(shù):TCP是可靠的連接通信技術(shù),主要使用套接字(Socket)機(jī)制。TCP通信是使用TCP/IP協(xié)議、建立在穩(wěn)定連接基礎(chǔ)上的、以流傳輸數(shù)據(jù)的通信方式。(3)UDP編程技術(shù):
6、UDP是無(wú)連接的快速通信技術(shù),數(shù)據(jù)報(bào)通信不需要建立連接,通信時(shí)所傳輸?shù)臄?shù)據(jù)報(bào)能否到達(dá)目的地、到達(dá)的時(shí)間、到達(dá)的次序都不能準(zhǔn)確知道。12.1 網(wǎng)絡(luò)基礎(chǔ)知識(shí)Socket(套接字)是操作系統(tǒng)內(nèi)核中的一個(gè)數(shù)據(jù)結(jié)構(gòu),它是網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行相互通信的門戶,它是網(wǎng)絡(luò)進(jìn)程的ID。網(wǎng)絡(luò)通信,歸根到底還是進(jìn)程間的通信(不同計(jì)算機(jī)上的進(jìn)程間通信,IP協(xié)議進(jìn)行的主要是端到端通信)。Socket編程即是網(wǎng)絡(luò)中節(jié)點(diǎn)間基于某種協(xié)議的多進(jìn)程間的交互操作編程。12.2 Socket編程1.Socket套接字的概念在網(wǎng)絡(luò)中,每一個(gè)節(jié)點(diǎn)(計(jì)算機(jī)或路由)都有一個(gè)網(wǎng)絡(luò)地址,也就是IP地址。兩個(gè)進(jìn)程通信時(shí),首先要確定各自所在的網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)
7、絡(luò)地址。網(wǎng)絡(luò)地址只能確定進(jìn)程所在的計(jì)算機(jī),不能確定是和網(wǎng)絡(luò)中的哪一個(gè)進(jìn)程進(jìn)行通信,因此套接字中還需要包括其他的信息,也就是端口號(hào)(PORT)。12.2 Socket編程在一臺(tái)計(jì)算機(jī)中,一個(gè)端口號(hào)一次只能分配給一個(gè)進(jìn)程,也就是說(shuō),端口號(hào)和進(jìn)程之間是一一對(duì)應(yīng)關(guān)系。所以,使用端口號(hào)和網(wǎng)絡(luò)地址的組合可以唯一的確定整個(gè)網(wǎng)絡(luò)中的一個(gè)網(wǎng)絡(luò)進(jìn)程。端口號(hào)的范圍從065535,一類是由互聯(lián)網(wǎng)指派名字和號(hào)碼公司ICANN負(fù)責(zé)分配給一些常用的應(yīng)用程序固定使用的“周知的端口”,其值一般為01023,用戶自定義端口號(hào)一般大于等于1024。每一個(gè)Socket都用一個(gè)半相關(guān)描述協(xié)議、本地地址、本地端口來(lái)表示;一個(gè)完整的套接字
8、則用一個(gè)相關(guān)描述協(xié)議、本地地址、本地端口、遠(yuǎn)程地址、遠(yuǎn)程端口來(lái)表示。12.2 Socket編程2、Socket類型Socket類型都定義在Socket模塊中,調(diào)用方式socket.SOCK_XXXX。(1)流式Socket(SOCK_STREAM)用于TCP通信(2)數(shù)據(jù)報(bào)Socket(SOCK_DGRAM)用于UDP通信 (3)原始套接字(SOCK_RAW)用于新的網(wǎng)絡(luò)協(xié)議(ICMP、IGMP、IPv4報(bào)文等)12.2 Socket編程12.2 Socket編程import socket,os,json # 服務(wù)端程序# 客戶端請(qǐng)求服務(wù)端的文件,服務(wù)端確認(rèn)后將文件發(fā)送給客戶端sock = s
9、ocket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.bind(,9999)sock.listen(1)def pack_msg_header(header,header_size): # 制作文件頭部 bytes_header = bytes(json.dumps(header) ,encoding=utf-8) if len(bytes_header ) :).strip() if not cmd : continue sock.send(cmd.encode(utf-8) msg_header = sock.recv(300) # 規(guī)定頭
10、文件的長(zhǎng)度為300 print(received:,msg_header.decode(gbk) header = json.loads(msg_header.decode(utf-8) if header.get(error): print(header.get(error)【例12-1】 基于TCP的套接字,實(shí)現(xiàn)C/S通信。12.2 Socket編程 else: filename = headerfilename; file_size = headersize f = open(filename,wb) received_size = 0 while received_size file_
11、size : if file_size - received_size :).strip() if not msg:continue udp_client.sendto(msg.encode(utf-8),ip_port) back_msg,addr=udp_client.recvfrom(1024) print(back_msg.decode(utf-8),addr)【例12-2】 基于UDP的套接字,實(shí)現(xiàn)C/S通信。UDP不需要建立連接,可以實(shí)現(xiàn)與多個(gè)客戶端同時(shí)建立連接。相比于TCP,UDP是不可靠傳輸,但是速度快。在代碼方面的區(qū)別,TCP的recv就相當(dāng)于UDP的recvfrom,TCP
12、的send就相當(dāng)于UDP的sendto,另外因?yàn)?UDP不建立連接,所以發(fā)送消息的時(shí)候需要指定ip和端口號(hào)。12.2 Socket編程1、SMTP發(fā)送郵件使用SMTP發(fā)送郵件SMTP(Simple Mail Transfer Protocol)即簡(jiǎn)單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來(lái)控制信件的中轉(zhuǎn)方式。Python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝。Python創(chuàng)建 SMTP 對(duì)象語(yǔ)法如下:import smtplibsmtpObj = smtplib.SMTP( host , port , local_host
13、name )12.3 電子郵件參數(shù)說(shuō)明:1)host:SMTP 服務(wù)器主機(jī)。你可以指定主機(jī)的ip地址或者域名如:,這個(gè)是可選參數(shù)。2)port:如果提供了host參數(shù),需要指定SMTP服務(wù)使用的端口號(hào),一般端口號(hào)為25。3)local_hostname:如果SMTP在本機(jī)上,只需要指定服務(wù)器地址為 localhost即可。Python SMTP對(duì)象使用sendmail方法發(fā)送郵件,語(yǔ)法如下:SMTP.sendmail(from_addr, to_addrs, msg, mail_options, rcpt_options這里要注意第三個(gè)參數(shù)msg是字符串,表示郵件。郵件一般由標(biāo)題、發(fā)信人、收件
14、人、郵件內(nèi)容、附件等構(gòu)成,要注意msg的格式,這個(gè)格式就是smtp協(xié)議中定義的格式。12.3 電子郵件參數(shù)說(shuō)明:1)from_addr:郵件發(fā)送者地址;2)to_addrs:字符串列表,郵件發(fā)送地址;3)msg:發(fā)送消息。12.3 電子郵件 import smtplibfrom email.mime.text import MIMETextfrom email.header import Header sender = ; receiver = # 替換自己的郵箱subject = python email test; smtpserver = username = ; password =
15、* # 自己郵箱的秘密msg = MIMEText(aaaaaaaaaaadbbbbbbbbbbb6666666, text, utf-8)msgSubject = Header(subject,utf-8); msgTo = receiversmtp=smtplib.SMTP(smtpserver,25)smtp.set_debuglevel(1); smtp.helo(smtpserver); smtp.ehlo(smtpserver)smtp.login(username, password)smtp.sendmail(sender, receiver, msg.as_string()s
16、mtp.quit()【例12-3】 使用Python發(fā)送郵件簡(jiǎn)單示例。12.3 電子郵件 import smtplibfrom email.mime.text import MIMETextmailto_list=YYYYYY.com # YYY、XXX處應(yīng)改寫實(shí)際郵件相關(guān)信息mail_host=smtp.XXX.com # 設(shè)置服務(wù)器mail_user=XXX # 用戶名mail_pass=XXX # 口令 mail_postfix=XXX.com # 發(fā)件箱的后綴def send_mail(to_list,sub,content): # to_list:收件人;sub:主題;content
17、:郵件內(nèi)容 me=hello+ # 這里的hello可以任意設(shè)置 msg = MIMEText(content,_subtype=html,_charset=gb2312) #設(shè)置為html格式郵件 【例12-4】 使用Python發(fā)送HTML格式郵件的示例。使用Python發(fā)送HTML格式的郵件12.3 電子郵件msgSubject = sub # 設(shè)置主題 msgFrom = me msgTo = ;.join(to_list) try: s = smtplib.SMTP() s.connect(mail_host) # 連接smtp服務(wù)器 s.login(mail_user,mail_p
18、ass) # 登陸服務(wù)器 s.sendmail(me, to_list, msg.as_string() # 發(fā)送郵件 s.close(); return True except Exception as e: print(str(e); return Falseif _name_ = _main_: if send_mail(mailto_list,hello,什么): print(發(fā)送成功) else: print(發(fā)送失敗)【例12-4】 使用Python發(fā)送HTML格式郵件的示例。發(fā)送HTML格式的郵件不同之處就是將MIMEText中_subtype設(shè)置為html。12.3 電子郵件
19、或者也可以在消息體中指定Content-type為text/html,如下示例:import smtplibmessage = From: From Person To: To Person MIME-Version: 1.0Content-type: text/htmlSubject: SMTP HTML e-mail testThis is an e-mail message to be sent in HTML formatThis is HTML message.This is headline. try: smtpObj = smtplib.SMTP(localhost) smtpO
20、bj.sendmail(sender, receivers, message) print(Successfully sent email)except SMTPException: print(Error: unable to send email)【例12-4】 使用Python發(fā)送HTML格式郵件的示例。12.3 電子郵件【例12-5】 使用Python發(fā)送帶附件的郵件。Python發(fā)送帶附件的郵件。12.3 電子郵件【例12-4】 使用Python發(fā)送HTML格式郵件的示例。12.3 電子郵件【例12-4】 使用Python發(fā)送HTML格式郵件的示例。2 、POP3收取郵件Python
21、內(nèi)制了一個(gè)poplib模塊(實(shí)現(xiàn)POP3協(xié)議)可以直接用來(lái)收郵件。要把POP3收取的文本變成可以閱讀的郵件,還需要用email模塊提供的各種類來(lái)解析原始文本,變成可閱讀的郵件對(duì)象。所以,收取郵件分兩步:1)用poplib把郵件的原始文本下載到本地;2)用email解析原始文本,還原為郵件對(duì)象。12.3 電子郵件POP3協(xié)議:POP3全名為“Post Office Protocol - Version 3”,收取郵件最常用的協(xié)議是就是POP協(xié)議,目前版本號(hào)是3因此為POP3。12.3 電子郵件【例12-6】 Python POP3協(xié)議收取郵件。12.3 電子郵件【例12-7】 通過(guò)POP3下載郵
22、件,來(lái)獲取最新的一封郵件內(nèi)容:12.3 電子郵件resp, lines, octets = server.retr(index); # lines存儲(chǔ)了郵件的原始文本的每一行,可以獲得整個(gè)郵件的原始文本:print(lines); msg_content = rn.join(str(lines)msg = Parser().parsestr(msg_content) # 稍后解析出郵件,Parser()功能需要自己補(bǔ)充# 可以根據(jù)郵件索引號(hào)直接從服務(wù)器刪除郵件:server.dele(index)server.quit() # 關(guān)閉連接【例12-7】 通過(guò)POP3下載郵件,來(lái)獲取最新的一封郵件
23、內(nèi)容:用POP3獲取郵件其實(shí)很簡(jiǎn)單,要獲取所有郵件,只需要循環(huán)使用retr()把每一封郵件內(nèi)容拿到即可。真正麻煩的是把郵件的原始內(nèi)容解析為可以閱讀的郵件對(duì)象。什么是爬蟲所謂爬蟲即網(wǎng)頁(yè)抓取,是請(qǐng)求網(wǎng)站并且提取自己所需的數(shù)據(jù)的一個(gè)過(guò)程。此過(guò)程類似于使用IE瀏覽器,把URL作為HTTP請(qǐng)求的內(nèi)容發(fā)送到服務(wù)器端,然后讀取服務(wù)器端的響應(yīng)資源。通過(guò)Python程序,可以向服務(wù)器發(fā)送請(qǐng)求,然后進(jìn)行批量、大量的數(shù)據(jù)的下載并保存。12.4 urllib爬蟲模塊1 、urllib抓取網(wǎng)頁(yè)用urllib或urllib2模塊簡(jiǎn)單抓取網(wǎng)頁(yè)12.4 urllib爬蟲模塊【例12-8】 在Python 2.x用urllib
24、2抓取指定頁(yè)面示例之一??梢源蜷_百度主頁(yè),右擊瀏覽器中選擇查看源代碼,會(huì)發(fā)現(xiàn)也是一樣的內(nèi)容。也就是說(shuō)上面這段代碼將訪問(wèn)百度時(shí)瀏覽器收到的代碼全部打印了出來(lái)。這就是一個(gè)最簡(jiǎn)單的urllib2的例子。除了“http:”,URL同樣可以使用“ftp:”、“file:”等來(lái)替代。HTTP是基于請(qǐng)求和應(yīng)答機(jī)制的:客戶端提出請(qǐng)求,服務(wù)端提供應(yīng)答。urllib2用一個(gè)Request對(duì)象來(lái)映射你提出的HTTP請(qǐng)求。在它最簡(jiǎn)單的使用形式中將要請(qǐng)求的地址創(chuàng)建一個(gè)Request對(duì)象。通過(guò)調(diào)用urlopen并傳入Request對(duì)象,將返回一個(gè)相關(guān)請(qǐng)求response對(duì)象,這個(gè)應(yīng)答對(duì)象如同一個(gè)文件對(duì)象,所以可以在Res
25、ponse中調(diào)用read()讀取方法。12.4 urllib爬蟲模塊【例12-8】 在Python 2.x用urllib2抓取指定頁(yè)面示例之二??梢钥吹捷敵龅膬?nèi)容和上例urllib2_test01.py輸出內(nèi)容是一樣的。urllib2使用相同的接口處理所有的URL頭。例如:可以像下面那樣創(chuàng)建一個(gè)ftp請(qǐng)求:req = urllib2.Request(/)12.4 urllib爬蟲模塊【例12-10】 在Python 3.x用urllib.request抓取指定頁(yè)面之三。使用的編輯器是Idle,在源程序文件中輸入程序后,按F5就能運(yùn)行并顯示結(jié)果。運(yùn)行結(jié)果如圖12-1所示。圖12-1 Python
26、抓取指定頁(yè)面的程序與抓取到的內(nèi)容12.4 urllib爬蟲模塊urllib.request是一個(gè)隸屬urllib的庫(kù)。代碼中用到它的urlopen()函數(shù)。urllib.request.urlopen(url, data=None, timeout, *, cafile=None, capath=None, cadefault=False) 這個(gè)函數(shù)返回一個(gè) http.client.HTTPResponse 對(duì)象,這個(gè)對(duì)象又有多種方法,比如read()方法,這些方法都可以在控制臺(tái)試運(yùn)行。 full_url= /s?word=Python response = urllib.request.ur
27、lopen(full_url) type(response) # response.geturl() # /s?word=Python () # response.getcode() # 200 表示http狀態(tài)正常發(fā)送data表單數(shù)據(jù)并抓取網(wǎng)頁(yè)12.4 urllib爬蟲模塊【例12-11】在Python2.x用urllib2抓取指定頁(yè)面之四(POST傳送數(shù)據(jù))。如果沒有傳送data參數(shù),urllib2使用GET方式的請(qǐng)求。發(fā)送data表單數(shù)據(jù)并抓取網(wǎng)頁(yè)12.4 urllib爬蟲模塊【例12-12】在Python 2.x用urllib2抓取指定頁(yè)面之五(Get傳送數(shù)據(jù))。Data同樣可以通過(guò)在
28、Get請(qǐng)求的URL本身上面編碼來(lái)傳送這樣就實(shí)現(xiàn)了Data數(shù)據(jù)的Get傳送。發(fā)送data表單數(shù)據(jù)并抓取網(wǎng)頁(yè)12.4 urllib爬蟲模塊【例12-13】 在Python 3.x用urllib抓取指定頁(yè)面之六(Get傳送數(shù)據(jù))。用Python簡(jiǎn)單處理URL,抓取百度上面搜索關(guān)鍵詞為Python Notes的網(wǎng)頁(yè):data是一個(gè)字典, 然后通過(guò)urllib.parse.urlencode()來(lái)將data轉(zhuǎn)換為 word=Python+Notes的字符串,最后和url合并為full_url。設(shè)置Headers到http請(qǐng)求12.4 urllib爬蟲模塊import urllib, urllib2url
29、 = /user_agent = Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)headers = User-Agent : user_agent values = tn: 98741884_hao_pg; data = urllib.urlencode(values)req = urllib2.Request(url, data, headers)response = urllib2.urlopen(req)the_page = response.read(); print(the_page) # 讀取反饋的內(nèi)容并輸出【例12-14】 在Pyth
30、on 2.x用urllib2抓取指定頁(yè)面之七(把自身模擬成Internet Explorer)。對(duì)網(wǎng)頁(yè)內(nèi)容做簡(jiǎn)單處理12.4 urllib爬蟲模塊import urllib.request, re # 抓取指定頁(yè)面之八def gethtml(url): page=urllib.request.urlopen(url); html=page.read(); return htmldef getimg(html): reg = rsrc=(.+?.jpg) pic_ext imgre = pile(reg); html=html.decode(utf-8) imglist = re.findall(imgre,html) return imglisthtml=g
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度跨境電商主體變更與物流及客服人員勞動(dòng)合同3篇
- 二零二五版海外農(nóng)業(yè)開發(fā)項(xiàng)目勞務(wù)輸出合同2篇
- 二零二五版股權(quán)回購(gòu)項(xiàng)目擔(dān)保及投資風(fēng)險(xiǎn)控制合同3篇
- 二零二五年教育培訓(xùn)機(jī)構(gòu)招生合同正本3篇
- 二零二五版辦公樓物業(yè)客戶關(guān)系管理與滿意度調(diào)查合同3篇
- 二零二五年度行政合同在社會(huì)保障體系中的構(gòu)建與實(shí)施2篇
- 二零二五年股東股權(quán)轉(zhuǎn)讓合同范本3篇
- 二零二五年度祠堂傳統(tǒng)節(jié)日慶典活動(dòng)承包合同3篇
- 二零二五版企業(yè)間借款合同模板與債務(wù)轉(zhuǎn)讓協(xié)議標(biāo)準(zhǔn)范本6篇
- 二零二五年綠色能源板車租賃服務(wù)合同3篇
- 民宿建筑設(shè)計(jì)方案
- 干部基本信息審核認(rèn)定表
- 2023年11月外交學(xué)院(中國(guó)外交培訓(xùn)學(xué)院)2024年度公開招聘24名工作人員筆試歷年高頻考點(diǎn)-難、易錯(cuò)點(diǎn)薈萃附答案帶詳解
- 春節(jié)行車安全常識(shí)普及
- 電機(jī)維護(hù)保養(yǎng)專題培訓(xùn)課件
- 汽車租賃行業(yè)利潤(rùn)分析
- 春節(jié)拜年的由來(lái)習(xí)俗來(lái)歷故事
- 2021火災(zāi)高危單位消防安全評(píng)估導(dǎo)則
- 佛山市服務(wù)業(yè)發(fā)展五年規(guī)劃(2021-2025年)
- 房屋拆除工程監(jiān)理規(guī)劃
- 醫(yī)院保安服務(wù)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論