Python爬取金十数据并在手机上提示

本程序的目的:每天早上爬取重要的金十财经数据,并发送到手机上,早起就可以看到。
为啥要看财经数据?呵呵哒。

环境准备:
1.python 3.8
2.一个linux服务器,24小时不关机
3.一个开启第三方授权的QQ邮箱
4.微信...

程序代码如下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Created by: Niuyoucai
# 2022.04.09 Ver 1.0
# https://rili.jin10.com爬虫

import requests, re, sys
from datetime import *
from bs4 import BeautifulSoup
import smtplib
import email.message

class Spider(object):
    '''
    用于jin10网站爬虫的专用类
    Created by: Niuyoucai
    2022.04.09 Ver 1.0
    '''
    def __init__(self):
        self.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.141 Safari/537.36'
        }
        self.root = 'https://rili.jin10.com/day/'
        self.session = requests.session()
        self.html = ''
        self.mailtext = ''
 
    def getHtmlContent(self, dt):
        '''读取网页文本信息用于解析
        '''
        self.dt = dt
        url = self.root + dt
        try:
            response = self.session.get(url, headers=self.headers)
            response.encoding = 'utf-8'
            self.html = response.text
            self.getDatas()
            self.getEvents()
            self.getHolidays()
        except requests.exceptions.RequestException as e:
            self.html = ''

    def getDatas(self):
        '''获取重要经济数据
        '''
        stpos = self.html.find('经济数据')
        topos = self.html.find('事件')
        html = self.html[stpos:topos]
        soup = BeautifulSoup(html, 'html.parser')
        trs = soup.find_all('tr', attrs='jin-table-row')
        info = '[' + self.dt + ']' + '<br>' + '<b>重要经济数据</b>' + '<br>'
        for tr in trs:
            if 'is-important' not in str(tr):
                continue
            tds = tr.find_all('td')
            for col in tds:
                data = re.sub('<.*?>', '', str(col)).strip()
                info += data
                info += '  '
            info += '<br>'
        
        self.mailtext += info

    def getEvents(self):
        '''获取重要事件
        '''
        stpos = self.html.find('事件')
        topos = self.html.find('假期')
        html = self.html[stpos:topos]
        soup = BeautifulSoup(html, 'html.parser')
        trs = soup.find_all('tr', attrs='jin-table-row')
        info = '<b>重要事件</b>' + '<br>'
        for tr in trs:
            if 'is-important' not in str(tr):
                continue
            tds = tr.find_all('td')
            for col in tds:
                data = re.sub('<.*?>', '', str(col)).strip()
                info += data
                info += '  '
            info += '<br>'
        
        self.mailtext += info

    def getHolidays(self):
        '''获取假期
        '''
        # html = self.getHtmlContent(self.root)
        stpos = self.html.find('假期')
        html = self.html[stpos:]
        soup = BeautifulSoup(html, 'html.parser')
        trs = soup.find_all('tr', attrs='jin-table-row current-countdown')
        info = '<b>假期</b>' + '<br>'
        for tr in trs:
            tds = tr.find_all('td')
            for col in tds:
                data = re.sub('<.*?>', '', str(col)).strip()
                info += data
                info += '  '
            info += '<br>'
        
        self.mailtext += info

    def mailqq(self):
        #没有爬取到内容时不发邮件
        if self.mailtext == '':
            return
        smtpObj = smtplib.SMTP_SSL('smtp.qq.com',465)
        msg = email.message.EmailMessage()
        msg.set_type('text/html')
        msg["From"] = "3285219560@qq.com"
        msg["To"] = "3285219560@qq.com"
        msg["Subject"] = "每日交易提醒"
        text = "<html><body>" + self.mailtext + "</body></html>"
        
        try:
            smtpObj.login('3285219560@qq.com', 'qq邮箱的第三方授权码')
            #msg.set_content(content)
            msg.add_alternative(text, subtype='html')
            smtpObj.send_message(msg)
        except smtplib.SMTPException as e:
            print(repr(e))
        finally:
            smtpObj.quit()

def main():
    #参数检查
    if len(sys.argv) > 2:
        print('用法:', sys.argv[0], '[数据日期YYYY-MM-dd]')
        return
    #缺省爬取今明两天的数据
    elif len(sys.argv) == 1:
        myspider = Spider()
        dt = datetime.strftime(datetime.now(), '%Y-%m-%d')      
        myspider.getHtmlContent(dt)
        dt = datetime.strftime(datetime.now() + timedelta(days=1), '%Y-%m-%d')
        myspider.getHtmlContent(dt)
        myspider.mailqq()
    #参数指定日期单独一天数据爬取
    elif len(sys.argv) == 2:
        myspider = Spider()
        dt = sys.argv[1]
        myspider.getHtmlContent(dt)
        myspider.mailqq()

if __name__ == '__main__':
    main()

程序说明
金十财经日历有三个内容,财经数据、事件、假期。
程序分别用三个函数爬取。但只摘取重要数据和事件。
获取的内容编辑成html邮件,用qq邮箱给自己发一封信。
QQ邮箱的第三方授权要开启,去qq邮箱的网页版上开启,方法这里不赘婿。
用微信绑定qq邮箱,开启qq邮件提醒功能,这样有邮件到达邮箱,微信就会"咚"地提示一声,然后打开看一下,是这个样子的:


微信图片_20220410204009.jpg

自动执行
linux服务器,crontab设定

58 6 * * 1-5 /home/niu/bin/jin10.py

周一到周五早上6点58分执行一次。可以当闹钟用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容