クラウド上のサーバーでPythonのコードを実行できるPythonAnywhereで無料のアカウントでもメールを送ったり、スクレイピングすることを説明しました。
①PythonAnywhereの無料アカウントからメールを送る
https://qiita.com/Kent-747/items/fa92c51d81cd4f50eadc
➁PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング
https://qiita.com/Kent-747/items/0380de9ec7d6de137afa
今回は、それらを組み合わせて、Google Newsのヘッドラインをスクレイピングした結果をメールで送ってみたいと思います。
基本的には、以前紹介したコードを組み合わせただけです。
import requests
from bs4 import BeautifulSoup
import re
import smtplib, ssl
from email.mime.text import MIMEText
# SMTP認証情報
account = "xxxxx@gmail.com"
password = "yyyyy"
# 送受信先
to_email = "zzzzz@gmail.com"
from_email = "xxxxx@gmail.com"
######## ここからGooglニュースのトップページ情報を取得する #####
URL = "https://news.google.com/topstories?hl=ja&gl=JP&ceid=JP:ja"
rest = requests.get(URL)
# BeautifulSoupにGoogleニュースのページ内容を読み込ませる
soup = BeautifulSoup(rest.text, "html.parser")
# Googleニュースの見出しとURLの情報を取得して出力する
data_list = soup.find_all('h3')
allHeadlines =''
for data in data_list:
print(data.text)
allHeadlines += data.text
allHeadlines += "<br>"
# MIMEの作成
subject = "本日のGoogle News"
msg = MIMEText(allHeadlines, "html")
msg["Subject"] = subject
msg["To"] = to_email
msg["From"] = from_email
server = smtplib.SMTP_SSL("smtp.gmail.com", 465, context=ssl.create_default_context())
server.login(account, password)
server.send_message(msg)
server.quit()
今回、少しはまったところは、ヘッドラインをメッセージとして準備する際に
で改行させて連結するところです。
こちらを保存してPythonAnywhere上で実行することは前回の記事を参考にしてください。
それが動くことが確認できたら、次のようにTaskとして毎朝メールが発信できるようすることもできます
UTCでしか時間は設定できなくて、日本時間から+9hとのことです。
私は毎朝7:35に届くようにしてみました。