python实现给你女朋友发天气预报和情话
今天说一下如何用python给你女朋友发天气预报和情话,让她明白程序员也有浪漫
整体思路:
-
上网爬取天气信息 上网爬取情话 发邮件 实现定时发邮件
需要用到的模块:
-
requests:用于向网站发送请求 yagmail:用法发邮件 schedule:用于实现定时任务 BeautifulSoup:处理网页标签 re:正则过滤
天气获取的url:https://tianqi.2345.com/。这个是默认的,为了省去一写麻烦我直接在首页点到对应的城市,最终链接如下:https://tianqi.2345.com/cixian1d/70177.htm,你们可以改成你们女朋友城市的链接。
我获取情话的url地址是:https://www.guaze.com/juzi/23389.html。当然,你们也可以自定义一些情话使用random随机发送
首先我们需要导入对应的模块: 先做第一步,上网爬取天气信息
import requests from bs4 import BeautifulSoup url = https://tianqi.2345.com/cixian1d/70177.htm
经过分析我们找到了我们要取的标签内容所在位置
接下来我们开始爬取:
web = requests.get(url) # 对网页进行get请求 # print(web.text) page = BeautifulSoup(web.text,html.parser) # 将get下来的网页内容交给BeautifulSoup处理,并指定解释器为html weather = page.find(div,class_=real-today) # 搜索我们要获取的span标签内容上面的div标签,指定它的class name为real-today。这个可以在上图看到div后面有class,后面引号内的内容就是它的class name print(weather.text)
执行结果如下: 今天:24-31° 阵雨转阴
到这第一步爬取天气就完成了,是不是很简单.
接下来我们开始第二部,爬取情话
此步还需再导入一个re模块
import re loveurl = https://www.guaze.com/juzi/23389.html web2 = requests.get(loveurl) web2.encoding=gb2312 # 此处需要对网站指定一个编码格式 # print(web2.text) page = BeautifulSoup(web2.text, "html.parser") div = page.find(div, class_="content") print(div.text) # 和上面套路相同
执行结果如下:(太多,所以只展示了部分) 1、人总是贪婪的,就像最开始我只想知道你的名字。 2、海上月是天上月,眼前人是心上人。——张爱玲 3、你知道我的缺点是什么吗?是缺点你 4、我昨天晚上梦到你了,梦里面我很爱你,对于我来说,梦是虚假的,但爱你是真的。
5、想做那个只喜欢你,也只被你喜欢的人 6、这么多的路,到底哪一条才能到你心里 7、遇见你我变得很低很低,一直低到尘埃里去.但我的心是欢喜的,在那里开出一朵花来。——张爱玲
可以看到跟明显的缺陷,就是有空行,所以我们需要稍加处理
div = str(div.text) # 转换上面获取到的内容格式为字符串 grep = re.compile(r"d+、(.*)") # re过滤格式为 数字、任意内容,将空行排除 content = grep.findall(div) # 指定要过滤的内容为div,并返回个列表 print(content[1]) # 打印列表内下标为1的内容
结果如下: 海上月是天上月,眼前人是心上人。——张爱玲
到这第二步也完成了,剩下就剩下定时发邮件了
导入模块:
完整代码:
其中ran变量用于取情话列表内的内容,每发一次加1,以此来让每次发的情话都不一样
效果如下:(我这里设置的是每天凌晨5:21发送,你可以根据需求改,图片也是)快给你女朋友安利起来吧!
