每天爬取http://www.sge.com.cn/(上海黄金交易所)的黄金价格,并自动发送到邮箱
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import requests
import re
import datetime
import ssl
requests.packages.urllib3.disable_warnings()
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_NONE
url = "http://www.sge.com.cn/"
def url_open(url):
try:
page_headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0',
}
res=requests.get(url,headers=page_headers,verify=False)
status=res.status_code
data=res.text
return data
except:
pass
def get_today():
h=datetime.datetime.now()
today=h.strftime("%Y-%m-%d")
return today
def get_gold():
try:
fileName='gold_price.txt'
message=''
data=url_open(url)
today_date=get_today()
pat1='<span class="fl color999">((.*?))'
pat2='<span class="colorRed fs24">(.+?)<'
statis_time=re.compile(pat1).findall(data)[0]
today_price=re.compile(pat2).findall(data)[0]
with open(fileName,'a+') as fh:
fh.write("日期:"+today_date+"\t"+statis_time+"\t"+"早盘价:"+today_price+"\n")
message=statis_time+"的黄金价格为:"+str(today_price)
return message
except:
return "无法获取到黄金价格信息"
def mail_qq(subject,content):
mail_host="smtp.qq.com"
mail_user="1xxxx@qq.com"
mail_pass="fobbaybdiubfgjhd"
sender="1xx@qq.com"
receivers=['1xxxxxxx@qq.com']
try:
message=MIMEText(content,'plain','utf-8')
message['From']=Header("小平",'utf-8')
message['To']=Header("小平",'utf-8')
message['Subject']=Header(subject,'utf-8')
server=smtplib.SMTP_SSL(mail_host,465)
server.login(mail_user,mail_pass)
server.sendmail(sender,receivers,message.as_string())
server.quit()
print("邮件发送成功")
except Exception as e:
print(e)
print("邮件发送失败")
if __name__=="__main__":
subject=get_gold()
today_data=get_today()
content="今天是"+today_data+","+subject
print(content)
mail_qq(subject,content)