ãPythonãæ°é»é®ä»¶éç¥å®ç°
ç»åä¹åå¦å°çç½ç»ç¬è«ååéçµåé®ä»¶çç¥è¯ï¼å®ç°ä¸ä¸ªåè½æå¡ãæ¬æç¨python代ç å®ç°ï¼ä»ææ°é»ç½ç«ç¬åä¸ä¸ªå¤´æ¡æ°é»ï¼æåæ é¢åurl龿¥ï¼ç¶åæè¿äºä¿¡æ¯æ´ååéå°æå®é®ç®±ä¸ã
代ç
主模åï¼æ§å¶æ´ä½æµç¨
from crawl_info import get_info
from send_mail import send_mail
if __name__ == '__main__': #æå¡ç¨åºçå
¥å£
crawl_url = "https://news.sina.com.cn/" # æ°æµªç½é¦é¡µ
content = get_info(crawl_url) #ç¬åä¿¡æ¯
send_mail(content) #åéçä¿¡
crawl_info模åï¼è·åå ³é®å 容
#å°è£
ç½ç»è·åçä¿¡æ¯
import requests
from bs4 import BeautifulSoup
import re
#è§£å³ç½é¡µç¼ç é®é¢
def getUrlCoding(data):
charset = 'utf-8'
if data.encoding.lower() == 'utf-8' or data.encoding == 'utf8':
return 'utf-8'
if data.encoding.lower() == 'gb2312':
return 'gb2312'
if data.encoding.lower() == 'gbk':
return 'gbk'
if data.encoding.lower() == 'gb18030':
return 'GB18030'
m = re.compile('<meta .*(http-equiv="?Content-Type"?.*)?charset="?([a-zA-Z0-9_-]+)"?', re.I).search(data.text)
if m and m.lastindex == 2:
charset = m.group(2).lower()
return charset
#è·åç½é¡µç详ç»ä¿¡æ¯
#è¿åå¸¦ææ°é»å°å忰黿 é¢çå符串
def get_info(url):
response = requests.get(url)
if response.status_code == 200:
response.encoding = getUrlCoding(response)
soup = BeautifulSoup(response.text, 'lxml')
big_news = soup.select('#syncad_1 > h1:nth-child(1) > a')[0].get_text() #æ é¢å
容
url = soup.select('#syncad_1 > h1:nth-child(1) > a')[0].get('href') #è·åurl
return "æ°é»æ é¢ï¼"+big_news+"\næ°é»å°åï¼"+url
send_mail模åï¼åéé®ä»¶
#åéé®ä»¶å°æå®çé®ç®±
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
def send_mail(text):
#é
置信æ¯ä»¥ç¯å¢åéçå½¢å¼ä¿å
user_mail = 'ä½ æ¬äººçé®ç®±å°å'
password = 'ä½ çé®ç®±å¯ç '
send_mail = 'æ¶ä»¶äººçé®ç®±å°å'
smtp_server = 'ä½ æå¨é®ç®±çsmtpæå¡å¨å°å'
#å¡«åé®ä»¶çæ£æãå件人信æ¯ãæ¶ä»¶äººä¿¡æ¯ã主é¢...
msg = MIMEText(text, 'plain', 'utf-8')
msg['From'] = _format_addr('XX 大æ°é» <%s>' % user_mail)
msg['To'] = _format_addr('æ¶ä»¶äºº <%s>' % send_mail)
msg['Subject'] = Header('xxæ°é»æé', 'utf-8').encode()
#ååºé®ä»¶è¦æ§è¡çå¨ä½
server = smtplib.SMTP(smtp_server, 25) #æ§è¡é®å±æå¡å¨ç25端å£
server.set_debuglevel(1) #
server.login(user_mail, password) #ç»å½æå¡å¨
server.sendmail(user_mail, [send_mail], msg.as_string()) #åéä¿¡ä»¶å°æå®çå°å
server.quit() #ç»ææå¡
è¿è¡
å®ç°