鱼C论坛

 找回密码
 立即注册
查看: 1021|回复: 3

[已解决]哪位大神帮忙看看怎么解决这个问题呀!跪求!!!

[复制链接]
发表于 2020-6-18 19:16:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


from bs4 import BeautifulSoup
import requests
import smtplib
from email.mime.text import MIMEText
import time
import bs4



class GrabNews():
    def __init__(self):
        self.NewsList = []
    def getNews(self):
        url = 'http://graduatedstudies.ju.edu.jo/ar/arabic/Home.aspx'
        r = requests.get(url)
        soup = bs4.BeautifulSoup(r.text, "html.parser")
        newsTitle = soup.find(text="الاعلانات")
        newsList = soup.find_all('a')
        for news in newsList:
            for string in news.stripped_strings:
                newsUrl = 'http://graduatedstudies.ju.edu.jo/' + news['href']
                self.NewsList.append({string:newsUrl})

def getNews():
    grabNews = GrabNews()
    grabNews.getNews()
    with open('news.html', 'w') as file:
        for news in grabNews.NewsList:
            for key in news.keys():  # key:value. key是新闻标题,value是新闻链接
                file.write('<a href=%s>%s</a>' % (news[key], '*'+key))
                file.write('<hr />')

def sendNews():
    # 第三方 SMTP 服务
    mail_host = 'smtp.gmail.com'  # SMTP服务器
    mail_user = 'liminghu91@gmail.com'  # 用户名
    mail_pass = 'Lmh123454321'

    # 收发方地址
    sender = 'liminghu91@gmail.com'  # 发件人邮箱
    receivers = ['630797301@qq.com']  # 接收邮件

    # 从HTML文件中读取发送邮件的内容
    fp = open('news.html')
    message = MIMEText(fp.read(), 'html')  # 内容, 格式, 编码
    fp.close()

    # 补全消息头部信息
    message['Subject'] = '约旦大学研究生学院公告'
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)

    try:
        smtpObj = smtplib.SMTP(mail_host, 25)  # SMTP协议默认端口是25
        smtpObj.login(mail_user, mail_pass)  # 登录验证
        smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
        print('mail has been send successfully.')
    except smtplib.SMTPException as e:
        print(e)


if __name__ == '__main__':
    while(True):
        if('14:11'==time.strftime('%H:%M')):
            getNews()
            sendNews()
            time.sleep(61)  # 等待一分钟以上
        else:
            time.sleep(30)  # 每30秒查询一次系统时间

提示:

file.write('<a href=%s>%s</a>' % (news[key], '*'+key))
UnicodeEncodeError: 'gbk' codec can't encode character '\u0627' in position 64: illegal multibyte sequence

Process finished with exit code 1

鬼知道解决了之后还会有多少坑在前面
最佳答案
2020-6-18 19:42:15
getNews函数里:
with open('news.html', 'w', encoding='utf-8') as file:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-18 19:41:00 | 显示全部楼层
打开方式改成这样:
with open('news.html', 'w', encoding = "utf-8") as file:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 19:42:15 | 显示全部楼层    本楼为最佳答案   
getNews函数里:
with open('news.html', 'w', encoding='utf-8') as file:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 19:43:57 | 显示全部楼层
from bs4 import BeautifulSoup
import requests
import smtplib
from email.mime.text import MIMEText
import time
import bs4



class GrabNews():
    def __init__(self):
        self.NewsList = []
    def getNews(self):
        url = 'http://graduatedstudies.ju.edu.jo/ar/arabic/Home.aspx'
        r = requests.get(url)
        soup = bs4.BeautifulSoup(r.text, "html.parser")
        newsTitle = soup.find(text="الاعلانات")
        newsList = soup.find_all('a')
        for news in newsList:
            for string in news.stripped_strings:
                newsUrl = 'http://graduatedstudies.ju.edu.jo/' + news['href']
                self.NewsList.append({string:newsUrl})

def getNews():
    grabNews = GrabNews()
    grabNews.getNews()
    with open('news.html', 'w', encoding='UTF-8') as file:
        for news in grabNews.NewsList:
            for key in news.keys():  # key:value. key是新闻标题,value是新闻链接
                file.write('<a href=%s>%s</a>' % (news[key], '*'+key))
                file.write('<hr />')

def sendNews():
    # 第三方 SMTP 服务
    mail_host = 'smtp.gmail.com'  # SMTP服务器
    mail_user = 'liminghu91@gmail.com'  # 用户名
    mail_pass = 'Lmh123454321'

    # 收发方地址
    sender = 'liminghu91@gmail.com'  # 发件人邮箱
    receivers = ['630797301@qq.com']  # 接收邮件

    # 从HTML文件中读取发送邮件的内容
    fp = open('news.html')
    message = MIMEText(fp.read(), 'html')  # 内容, 格式, 编码
    fp.close()

    # 补全消息头部信息
    message['Subject'] = '约旦大学研究生学院公告'
    message['From'] = "{}".format(sender)
    message['To'] = ",".join(receivers)

    try:
        smtpObj = smtplib.SMTP(mail_host, 25)  # SMTP协议默认端口是25
        smtpObj.login(mail_user, mail_pass)  # 登录验证
        smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
        print('mail has been send successfully.')
    except smtplib.SMTPException as e:
        print(e)


if __name__ == '__main__':
    while(True):
        if('14:11'==time.strftime('%H:%M')):
            getNews()
            sendNews()
            time.sleep(61)  # 等待一分钟以上
        else:
            time.sleep(30)  # 每30秒查询一次系统时间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表