Python實(shí)現(xiàn)一鍵收發(fā)郵件
基于 stmp 發(fā)送郵件-源碼
import smtplib from email.mime.text import MIMEText from email.header import Header # 郵件內(nèi)容 subject = 'python 郵件測(cè)試' body = ''' <div style='font-size:50px;color:blue;'>這是一個(gè)郵件正文</div> ''' # 構(gòu)建郵件 msg = MIMEText(body, 'html', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = '自己郵箱@qq.com' msg['To'] = '對(duì)方郵箱@qq.com' # 發(fā)送郵件 smtp_server = 'smtp.qq.com' smtp_port = 587 sender_email = '自己郵箱@qq.com' password = '專(zhuān)屬key' # 在QQ郵箱設(shè)置里拿到的碼 try: with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() server.login(sender_email, password) server.sendmail(sender_email, [msg['To']], msg.as_string()) print('郵件發(fā)送成功') except smtplib.SMTPException as e: print('郵件發(fā)送失敗:', str(e))
基于 stmp 發(fā)送郵件-源碼分析
這段代碼的主要功能是使用 Python 的smtplib庫(kù)和email庫(kù)來(lái)發(fā)送一封 HTML 格式的電子郵件。下面是對(duì)代碼的詳細(xì)分析:
導(dǎo)入庫(kù)
import smtplib from email.mime.text import MIMEText from email.header import Header
smtplib:用于發(fā)送郵件。
email.mime.text.MIMEText:用于創(chuàng)建 MIME 格式的郵件正文。
email.header.Header:用于創(chuàng)建郵件的頭部信息。
郵件內(nèi)容和格式設(shè)置
subject = 'python 郵件測(cè)試' body = ''' <div style='font-size:50px;color:blue;'>這是一個(gè)郵件正文</div> '''
subject:郵件的主題。
body:郵件的正文內(nèi)容,這里使用了 HTML 格式。
構(gòu)建郵件
msg = MIMEText(body, 'html', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = '自己郵箱@qq.com' msg['To'] = '對(duì)方郵箱@qq.com'
使用MIMEText創(chuàng)建郵件正文,指定內(nèi)容類(lèi)型為html和字符編碼為utf-8。
設(shè)置郵件的主題、發(fā)件人和收件人。注意,Header用于處理主題的編碼。
發(fā)送郵件
smtp_server = 'smtp.qq.com' smtp_port = 587 sender_email = '自己郵箱@qq.com' password = '專(zhuān)屬key' # 在QQ郵箱設(shè)置里拿到的碼
設(shè)置 SMTP 服務(wù)器地址、端口、發(fā)件人郵箱和密碼。這里的密碼應(yīng)該是 QQ 郵箱的授權(quán)碼,而不是 QQ 郵箱的登錄密碼。
嘗試發(fā)送郵件
try: with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() # 啟動(dòng)TLS加密 server.login(sender_email, password) # 登錄SMTP服務(wù)器 server.sendmail(sender_email, [msg['To']], msg.as_string()) # 發(fā)送郵件 print('郵件發(fā)送成功') except smtplib.SMTPException as e: print('郵件發(fā)送失敗:', str(e))
使用with語(yǔ)句創(chuàng)建 SMTP 連接,確保在發(fā)送完郵件后自動(dòng)關(guān)閉連接。
server.starttls():?jiǎn)?dòng) TLS 加密,保證郵件傳輸?shù)陌踩浴?/p>
server.login(sender_email, password):使用發(fā)件人的郵箱和密碼登錄 SMTP 服務(wù)器。
server.sendmail(sender_email, [msg['To']], msg.as_string()):發(fā)送郵件,指定發(fā)件人、收件人和郵件內(nèi)容。
使用try...except語(yǔ)句捕獲可能發(fā)生的 SMTP 異常,并打印錯(cuò)誤信息。
注意事項(xiàng)
確保 QQ 郵箱已經(jīng)開(kāi)啟了 SMTP 服務(wù),并獲取了授權(quán)碼。
如果使用其他郵箱服務(wù)提供商,需要修改 SMTP 服務(wù)器地址和端口。
郵件正文中的 HTML 代碼可能會(huì)被郵件客戶端解析為不同的樣式,具體效果取決于郵件客戶端的實(shí)現(xiàn)。
在實(shí)際應(yīng)用中,建議使用更安全的方式存儲(chǔ)和處理密碼,例如使用環(huán)境變量或加密存儲(chǔ)。
基于 pop3 獲取郵件標(biāo)題-源碼
import poplib from email.parser import BytesParser from email.header import make_header, decode_header # 連接到POP3服務(wù)器 try: pop_server = poplib.POP3_SSL('pop.qq.com', 995) pop_server.user('自己郵箱@qq.com') pop_server.pass_('專(zhuān)屬key') except poplib.error_proto as e: print(f"Error connecting to POP3 server: {e}") exit(1) try: # 獲取郵箱中的郵件信息 num_emails = len(pop_server.list()[1]) # 遍歷每封郵件 for i in range(num_emails): # 獲取郵件內(nèi)容 response, lines, octets = pop_server.retr(i + 1) email_content = b'\r\n'.join(lines) # 解析郵件內(nèi)容 email_parser = BytesParser() email = email_parser.parsebytes(email_content) # 解析郵件頭部信息 email_from = make_header(decode_header(email.get('From').strip())) subject = make_header(decode_header(email.get('Subject').strip())) if email.get('Subject') else None if email_from: # 只處理存在發(fā)件人的郵件 print("------------------") print("From:", email_from) print("Subject:", subject) else: continue # 跳過(guò)缺失發(fā)件人的郵件 except Exception as e: print(f"An error occurred: {e}") finally: # 確保連接關(guān)閉 pop_server.quit()
基于 pop3 獲取郵件正文-源碼分析
這段代碼的主要功能是連接到 POP3 服務(wù)器,獲取郵箱中的所有郵件,并解析每封郵件的發(fā)件人和主題。以下是對(duì)代碼的詳細(xì)分析:
導(dǎo)入庫(kù)
import poplib from email.parser import BytesParser from email.header import make_header, decode_header
poplib:用于連接和操作 POP3 服務(wù)器。
email.parser.BytesParser:用于解析郵件內(nèi)容。
email.header.make_header 和 email.header.decode_header:用于解析和解碼郵件頭部信息。
連接到 POP3 服務(wù)器
try: pop_server = poplib.POP3_SSL('pop.qq.com', 995) pop_server.user('自己郵箱@qq.com') pop_server.pass_('專(zhuān)屬key') except poplib.error_proto as e: print(f"Error connecting to POP3 server: {e}") exit(1)
使用POP3_SSL連接到 POP3 服務(wù)器,指定服務(wù)器地址和端口(POP3S 默認(rèn)端口為 995)。
使用user和pass_方法登錄到郵箱,其中pass_是password的別名,因?yàn)閜assword是 Python 的保留字。
如果連接或登錄失敗,捕獲poplib.error_proto異常并打印錯(cuò)誤信息,然后退出程序。
獲取和解析郵件
try: # 獲取郵箱中的郵件數(shù)量 num_emails = len(pop_server.list()[1]) # 遍歷每封郵件 for i in range(num_emails): # 獲取郵件內(nèi)容 response, lines, octets = pop_server.retr(i + 1) email_content = b'\r\n'.join(lines) # 解析郵件內(nèi)容 email_parser = BytesParser() email = email_parser.parsebytes(email_content) # 解析郵件頭部信息 email_from = make_header(decode_header(email.get('From').strip())) subject = make_header(decode_header(email.get('Subject').strip())) if email.get('Subject') else None # 打印發(fā)件人和主題 if email_from: print("------------------") print("From:", email_from) print("Subject:", subject) else: continue except Exception as e: print(f"An error occurred: {e}")
使用list方法獲取郵箱中的郵件列表,并計(jì)算郵件數(shù)量。
遍歷每封郵件,使用retr方法獲取郵件內(nèi)容。
使用BytesParser解析郵件內(nèi)容。
解析和解碼郵件的發(fā)件人和主題,并打印出來(lái)。如果郵件缺少發(fā)件人信息,則跳過(guò)該郵件。
捕獲并打印可能發(fā)生的任何異常。
關(guān)閉連接
finally: pop_server.quit()
使用quit方法確保在程序結(jié)束前關(guān)閉與 POP3 服務(wù)器的連接。
注意事項(xiàng)
安全性:在實(shí)際應(yīng)用中,不建議將郵箱密碼硬編碼在代碼中。可以使用環(huán)境變量或配置文件來(lái)存儲(chǔ)敏感信息。
錯(cuò)誤處理:代碼已經(jīng)包含了一些基本的錯(cuò)誤處理,但在生產(chǎn)環(huán)境中可能需要更詳細(xì)的錯(cuò)誤處理和日志記錄。
性能考慮:如果郵箱中有大量郵件,逐封下載和解析可能會(huì)很慢??梢钥紤]使用更高效的郵件處理方法,如分頁(yè)獲取郵件或使用 IMAP 協(xié)議。
郵件內(nèi)容處理:當(dāng)前代碼只解析了郵件的發(fā)件人和主題。如果需要處理郵件正文或其他附件,需要進(jìn)一步擴(kuò)展代碼。
基于 pop3 獲取郵件內(nèi)容-源碼
import poplib from email.parser import BytesParser from email.policy import default from email.header import make_header, decode_header import logging # 配置日志 logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') def get_html_payload(email_message): if email_message.is_multipart(): for part in email_message.iter_parts(): content_type = part.get_content_type() if content_type == 'text/html': return part.get_content() elif email_message.get_content_type() == 'text/html': return email_message.get_content() # 連接到POP3服務(wù)器 try: pop_server = poplib.POP3_SSL('pop.qq.com', 995) pop_server.user('自己郵箱@qq.com') pop_server.pass_('專(zhuān)屬key') # 確保密碼正確 logging.info("Successfully connected to POP3 server.") except poplib.error_proto as e: logging.error(f"Failed to connect to POP3 server: {e}") exit(1) except Exception as e: logging.error(f"An unexpected error occurred while connecting to POP3 server: {e}") exit(1) # 獲取郵箱中的郵件信息 try: num_emails = len(pop_server.list()[1]) logging.info(f"Found {num_emails} emails in the inbox.") except poplib.error_proto as e: logging.error(f"Failed to list emails: {e}") pop_server.quit() exit(1) except Exception as e: logging.error(f"An unexpected error occurred while listing emails: {e}") pop_server.quit() exit(1) # 遍歷每封郵件 for i in range(num_emails): try: # 獲取郵件內(nèi)容 response, lines, octets = pop_server.retr(i + 1) email_content = b'\r\n'.join(lines) # 解析郵件內(nèi)容 email_parser = BytesParser(policy=default) email = email_parser.parsebytes(email_content) # 解析郵件頭部信息 email_from = email.get('From').strip() email_from = str(make_header(decode_header(email_from))) if email_from: # 只處理存在發(fā)件人的郵件 # 解析郵件主題 subject = email.get('Subject').strip() decoded_subject = str(make_header(decode_header(subject))) if subject else None # 提取郵件正文 email_body = get_html_payload(email) if email_body: print("------------------") print("From:", email_from) print("Subject:", decoded_subject) print("Body:", email_body.decode('utf-8', errors='ignore')) else: logging.warning(f"No HTML body found in email {i + 1}.") else: logging.warning(f"No sender found in email {i + 1}.") except poplib.error_proto as e: logging.error(f"Failed to process email {i + 1}: {e}") except UnicodeDecodeError as e: logging.error(f"Failed to decode email body in email {i + 1}: {e}") except Exception as e: logging.error(f"An unexpected error occurred while processing email {i + 1}: {e}") # 關(guān)閉連接 pop_server.quit()
基于 pop3 獲取郵件內(nèi)容-源碼解析
這段代碼的主要功能是連接到 POP3 服務(wù)器,獲取郵箱中的所有郵件,并解析每封郵件的發(fā)件人、主題和 HTML 正文。以下是對(duì)代碼的詳細(xì)分析:
導(dǎo)入庫(kù)和配置日志
import poplib from email.parser import BytesParser from email.policy import default from email.header import make_header, decode_header import logging
導(dǎo)入所需的庫(kù)。
配置日志記錄,設(shè)置日志級(jí)別為 INFO,并定義日志格式。
定義函數(shù)get_html_payload
def get_html_payload(email_message): ...
這個(gè)函數(shù)用于從郵件消息中提取 HTML 正文。它首先檢查郵件是否為多部分郵件,然后遍歷每個(gè)部分,查找內(nèi)容類(lèi)型為text/html的部分并返回其內(nèi)容。如果郵件不是多部分的,但內(nèi)容類(lèi)型為text/html,則直接返回其內(nèi)容。
連接到 POP3 服務(wù)器
try: ... except poplib.error_proto as e: ... except Exception as e: ...
這部分代碼嘗試連接到 POP3 服務(wù)器,并處理可能發(fā)生的異常。如果連接成功,它會(huì)記錄一條 INFO 級(jí)別的日志。如果連接失敗,它會(huì)記錄一條 ERROR 級(jí)別的日志并退出程序。
獲取和解析郵件
try: ... except poplib.error_proto as e: ... except Exception as e: ...
這部分代碼獲取郵箱中的郵件列表,并遍歷每封郵件進(jìn)行處理。對(duì)于每封郵件,它執(zhí)行以下操作:
使用retr方法獲取郵件內(nèi)容。
使用BytesParser解析郵件內(nèi)容。
解析郵件的發(fā)件人和主題,并對(duì)它們進(jìn)行解碼。
使用get_html_payload函數(shù)提取 HTML 正文。
如果找到 HTML 正文,則打印發(fā)件人、主題和正文。否則,記錄一條 WARNING 級(jí)別的日志。
在處理每封郵件時(shí),代碼都會(huì)捕獲并處理可能發(fā)生的異常,包括poplib.error_proto(POP3 協(xié)議錯(cuò)誤)、UnicodeDecodeError(解碼錯(cuò)誤)和其他意外錯(cuò)誤。
關(guān)閉連接
pop_server.quit()
在處理完所有郵件后,代碼使用quit方法關(guān)閉與 POP3 服務(wù)器的連接。
注意事項(xiàng)和改進(jìn)點(diǎn)
安全性:密碼硬編碼在代碼中是不安全的。建議使用環(huán)境變量或配置文件來(lái)存儲(chǔ)敏感信息。
錯(cuò)誤處理:代碼已經(jīng)包含了一些基本的錯(cuò)誤處理,但在生產(chǎn)環(huán)境中可能需要更詳細(xì)的錯(cuò)誤處理和日志記錄。
性能考慮:如果郵箱中有大量郵件,逐封下載和解析可能會(huì)很慢。可以考慮使用更高效的郵件處理方法,如分頁(yè)獲取郵件或使用 IMAP 協(xié)議。
郵件內(nèi)容處理:當(dāng)前代碼只解析了郵件的發(fā)件人、主題和 HTML 正文。如果需要處理郵件附件或其他類(lèi)型的內(nèi)容,需要進(jìn)一步擴(kuò)展代碼。
日志記錄:可以考慮使用更高級(jí)的日志記錄庫(kù)(如loguru),以提供更豐富的日志功能和更好的性能。
基于 pop3 獲取郵件完整-源碼
import os import base64 import poplib from email import policy from email.parser import BytesParser from email.header import decode_header, make_header # 定義EmailClient類(lèi),用于連接到POP3服務(wù)器并從指定的郵件地址獲取郵件 class EmailClient: # 在初始化函數(shù)中,設(shè)置POP3服務(wù)器的來(lái)源、用戶、密碼和待查詢的目標(biāo)郵件地址 def __init__(self, host, user, password, target_email): self.pop_server = poplib.POP3_SSL(host) # 使用POP3協(xié)議通過(guò)SSL安全連接到郵件服務(wù)器 self.pop_server.user(user) # 輸入用戶郵箱 self.pop_server.pass_(password) # 輸入用戶郵箱密碼 self.target_email = target_email # 輸入待查詢的目標(biāo)郵件地址 # 定義一個(gè)函數(shù),用以清除文件名中的無(wú)效字符 def sanitize_folder_name(self, name): invalid_characters = "<>:\"/\\|?*@" for char in invalid_characters: # 遍歷所有無(wú)效字符 name = name.replace(char, "_") # 將無(wú)效字符替換為下劃線 return name # 返回清理后的名稱 # 定義一個(gè)函數(shù),用以提取郵件的payload(有效載荷,即郵件主體內(nèi)容) def get_payload(self, email_message): if email_message.is_multipart(): # 判斷郵件是否為多部分郵件 for part in email_message.iter_parts(): # 如果是,則遍歷其中的每一部分 content_type = part.get_content_type() # 獲取該部分的內(nèi)容類(lèi)型 if content_type == 'text/html': # 如果內(nèi)容類(lèi)型為HTML,則返回該部分內(nèi)容 return part.get_content() elif content_type == 'text/plain': # 如果內(nèi)容類(lèi)型為純文本,則返回該部分內(nèi)容 return part.get_content() elif email_message.get_content_type() == 'text/html': # 如果郵件非多部分形式,且為HTML類(lèi)型,則返回郵件內(nèi)容 return email_message.get_content() elif email_message.get_content_type() == 'text/plain': # 如果郵件非多部分形式,且為純文本類(lèi)型,則返回郵件內(nèi)容 return email_message.get_content() # 定義一個(gè)函數(shù),用以獲取郵件信息 def fetch_email(self): num_emails = len(self.pop_server.list()[1]) # 獲取郵箱內(nèi)的郵件數(shù)量 # 遍歷每一封郵件 for i in range(num_emails): # 獲取郵件內(nèi)容 response, lines, octets = self.pop_server.retr(i + 1) # retr函數(shù)返回指定郵件的全部文本 email_content = b'\r\n'.join(lines) # 將所有行連接成一個(gè)bytes對(duì)象 # 解析郵件內(nèi)容 email_parser = BytesParser(policy=policy.default) # 創(chuàng)建一個(gè)郵件解析器 email = email_parser.parsebytes(email_content) # 解析郵件內(nèi)容,返回一個(gè)郵件對(duì)象 # 解析郵件頭部信息并提取發(fā)件人信息 email_from = email.get('From').strip() # 獲取發(fā)件人信息,并去除尾部的空格 email_from = str(make_header(decode_header(email_from))) # 解碼發(fā)件人信息,并將其轉(zhuǎn)換為字符串 if email_from == self.target_email: # 如果發(fā)件人地址與指定的目標(biāo)郵件地址一致,對(duì)郵件進(jìn)行處理 # 解析郵件時(shí)間 email_time = email.get('Date') # 獲取郵件時(shí)間 # 提取郵件正文 email_body = self.get_payload(email) # 獲取郵件正文 return email_body, email_time # 返回郵件正文和時(shí)間 print("No new emails from", self.target_email) # 如果沒(méi)有從目標(biāo)郵件地址收到新郵件,打印相應(yīng)信息 return None, None # 返回None client = EmailClient('pop.qq.com', '自己自己@qq.com', '專(zhuān)屬key', '對(duì)方郵箱@qq.com') body, time = client.fetch_email() print("Time:", time) print("Body:", body)
基于 pop3 獲取郵件完整-源碼解析
這段代碼定義了一個(gè)EmailClient類(lèi),用于連接到 POP3 服務(wù)器并從指定的郵件地址獲取郵件。以下是對(duì)代碼的詳細(xì)分析:
導(dǎo)入庫(kù)
import os import base64 import poplib from email import policy from email.parser import BytesParser from email.header import decode_header, make_header
這些庫(kù)用于實(shí)現(xiàn)郵件的接收和處理功能。poplib用于連接 POP3 服務(wù)器,email庫(kù)用于解析郵件內(nèi)容。
EmailClient 類(lèi)
EmailClient類(lèi)包含以下方法:
__init__: 構(gòu)造函數(shù),用于初始化 POP3 服務(wù)器連接、用戶名、密碼和目標(biāo)郵件地址。
sanitize_folder_name: 清除文件名中的無(wú)效字符,但在這段代碼中并未使用。
get_payload: 提取郵件的有效載荷(郵件主體內(nèi)容),支持 HTML 和純文本格式。
fetch_email: 獲取郵件信息,遍歷郵箱內(nèi)的所有郵件,解析郵件頭部信息,提取發(fā)件人、時(shí)間和正文。
代碼執(zhí)行流程
創(chuàng)建EmailClient實(shí)例,傳入 POP3 服務(wù)器地址、用戶名、密碼和目標(biāo)郵件地址。
調(diào)用fetch_email方法獲取郵件正文和時(shí)間。
打印郵件時(shí)間和正文。
詳細(xì)分析
連接 POP3 服務(wù)器:使用poplib.POP3_SSL方法連接到 POP3 服務(wù)器,確保數(shù)據(jù)傳輸?shù)陌踩浴?/p>
登錄郵箱:使用user和pass_方法登錄到郵箱。
獲取郵件列表:使用list方法獲取郵箱內(nèi)的郵件數(shù)量。
遍歷郵件:使用retr方法獲取每封郵件的全部文本,然后使用BytesParser解析郵件內(nèi)容。
解析郵件頭部信息:使用get方法獲取發(fā)件人、時(shí)間等信息,并使用decode_header和make_header解碼發(fā)件人信息。
提取郵件正文:使用get_payload方法提取郵件正文,支持 HTML 和純文本格式。
返回結(jié)果:如果找到目標(biāo)郵件,返回郵件正文和時(shí)間;否則,打印提示信息并返回 None。
注意事項(xiàng)
安全性:密碼硬編碼在代碼中是不安全的,建議使用環(huán)境變量或配置文件存儲(chǔ)敏感信息。
錯(cuò)誤處理:代碼中沒(méi)有進(jìn)行詳細(xì)的錯(cuò)誤處理,例如網(wǎng)絡(luò)異常、登錄失敗等情況,建議添加相應(yīng)的異常處理。
資源釋放:在完成郵件操作后,應(yīng)該調(diào)用quit方法關(guān)閉與 POP3 服務(wù)器的連接。
編碼問(wèn)題:在處理郵件正文時(shí),可能會(huì)遇到編碼問(wèn)題,建議添加相應(yīng)的編碼處理邏輯。
功能擴(kuò)展:可以根據(jù)需求擴(kuò)展功能,例如支持附件下載、郵件過(guò)濾等。
以上就是Python實(shí)現(xiàn)一鍵收發(fā)郵件的詳細(xì)內(nèi)容,更多關(guān)于Python收發(fā)郵件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vscode搭建之python?Django環(huán)境配置方式
這篇文章主要介紹了vscode搭建之python?Django環(huán)境配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01解決pycharm不能自動(dòng)補(bǔ)全第三方庫(kù)的函數(shù)和屬性問(wèn)題
這篇文章主要介紹了解決pycharm不能自動(dòng)補(bǔ)全第三方庫(kù)的函數(shù)和屬性問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息
這篇文章主要介紹了Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08Python辦公自動(dòng)化PPT批量轉(zhuǎn)換操作
本文介紹如何使用 python 操作 PPT,用到的模塊就是 python-pptx,以下的示例基本滿足日常需求,如果要知道更多,可以訪問(wèn) python-pptx 的官方文檔2021-09-09Python中22個(gè)萬(wàn)用公式的小結(jié)
在大家的日常python程序的編寫(xiě)過(guò)程中,都會(huì)有自己解決某個(gè)問(wèn)題的解決辦法,或者是在程序的調(diào)試過(guò)程中,用來(lái)幫助調(diào)試的程序公式,本文總結(jié)了22個(gè)萬(wàn)用公式,感興趣的可以了解一下2021-07-07python數(shù)據(jù)結(jié)構(gòu)leetcode338比特位計(jì)數(shù)算法
這篇文章主要介紹了力扣刷題中python數(shù)據(jù)結(jié)構(gòu)leetcode338比特位計(jì)數(shù)算法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06基于python + django + whoosh + jieba 分詞器實(shí)現(xiàn)站內(nèi)檢索功能
這篇文章主要介紹了基于python + django + whoosh + jieba 分詞器實(shí)現(xiàn)站內(nèi)檢索功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08