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发送,你可以根据需求改,图片也是)快给你女朋友安利起来吧!

经验分享 程序员 微信小程序 职场和发展