鱼C论坛

 找回密码
 立即注册
查看: 1236|回复: 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函数里:
  1. with open('news.html', 'w', encoding='utf-8') as file:
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-18 19:41:00 | 显示全部楼层
打开方式改成这样:
  1. with open('news.html', 'w', encoding = "utf-8") as file:
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-18 19:42:15 | 显示全部楼层    本楼为最佳答案   
getNews函数里:
  1. with open('news.html', 'w', encoding='utf-8') as file:
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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



  7. class GrabNews():
  8.     def __init__(self):
  9.         self.NewsList = []
  10.     def getNews(self):
  11.         url = 'http://graduatedstudies.ju.edu.jo/ar/arabic/Home.aspx'
  12.         r = requests.get(url)
  13.         soup = bs4.BeautifulSoup(r.text, "html.parser")
  14.         newsTitle = soup.find(text="&#1575;&#1604;&#1575;&#1593;&#1604;&#1575;&#1606;&#1575;&#1578;")
  15.         newsList = soup.find_all('a')
  16.         for news in newsList:
  17.             for string in news.stripped_strings:
  18.                 newsUrl = 'http://graduatedstudies.ju.edu.jo/' + news['href']
  19.                 self.NewsList.append({string:newsUrl})

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

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

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

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

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

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


  51. if __name__ == '__main__':
  52.     while(True):
  53.         if('14:11'==time.strftime('%H:%M')):
  54.             getNews()
  55.             sendNews()
  56.             time.sleep(61)  # 等待一分钟以上
  57.         else:
  58.             time.sleep(30)  # 每30秒查询一次系统时间
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 04:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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