python生日提醒_Python实现农历生日提醒功能

前言:

某天突发奇想,想要实现一个农历生日提醒。这个时候有了如下的大概思路:

获取农历   ——>    匹配    ——>     提醒

发现实现这个需求最主要的在获取农历这一块,后边两个不是什么巨大挑战。遂查阅一番资料,发现数据库可以实现阳历转阴历功能。在数据库这一块,我是在是小菜,看不懂存储过程。蛋疼!直接放弃改用其他思路。思考了许久,想到可以通过爬虫爬取现成的日历信息,存库再进行匹配。所以,现在思路如下:

爬取农历存库   ——>    匹配姓名表    ——>     提醒

一、爬取日历网站

刚开始是按照每年一个表的思路去爬,代码及注释如下:

首先是建表:

(文件名:reptile\CreateDb.py)# -*- coding:utf-8 -*-

import MySQLdb

import os

#将敏感信息写入环境变量 通过export去设置value

MYSQLDB_HOST=os.environ.get('MYSQLDB_HOST')

MYSQLDB_USER=os.environ.get('MYSQLDB_USER')

MYSQLDB_PASSWD=os.environ.get('MYSQLDB_PASSWD')

db = MySQLdb.connect(

host=MYSQLDB_HOST,

port=3306,

user=MYSQLDB_USER,

passwd = MYSQLDB_PASSWD,

db='Calendar',

charset = "utf8",

)

cursor = db.cursor()

#数据库插入

def Insert_mysql(sql):

cursor.execute(sql)

db.commit()

#数据库查询

def Inquire_mysql(sql):

cursor.execute(sql)

request = cursor.fetchall()

return request

if __name__ == "__main__":

st_sql = "show tables;"

cursor.execute(st_sql)

request = cursor.fetchall()

for year in range(1900,2050):

if year in request:

print "[*]%d is in database!"

else:

print "[!]%s No in the Database,create now." % year

ct_sql = """CREATE TABLE `%d` (

`DAY`  date NOT NULL ,

`WEEK`  varchar(50) NULL ,

`CONSTELLATON`  varchar(50) NULL ,

`FESTIVAL`  varchar(24) NULL ,

`YEAR`  varchar(24) NULL ,

`LUNARCALENDAR`  varchar(60) NULL ,

`LUNNAR`  varchar(24) NULL ,

`ERSHIBASU`  varchar(24) NULL ,

`JIAZI`  varchar(24) NULL ,

PRIMARY KEY (`DAY`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8

;""" % year

try:

cursor.execute(ct_sql)

db.commit()

print "[.] %s OK!" % year

except:

print "Error:unable to fecth data"

db.close()

效果:dc86cc1db4569d5aa1ac197699c17c6b.png

接着爬取:

(文件名:reptile\Spider.py)#coding:utf-8

import re,urllib2

from bs4 import BeautifulSoup

from urllib import urlencode

class SiteData:

def __init__(self,url):

self.Url = url

def Data(self):

#伪装头

values = {'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,p_w_picpath/w        ebp,*/*;q=0.8',

'Accept-Language':'zh-CN,zh;q=0.8'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值