程序员的撩妹方式,用Python 助你追到心爱的人

程序员的撩妹方式,用Python 助你追到心爱的人

前言

程序员给人们的第一印象是每天穿格子衫、包头卫衣的宅男,为人很耿直,没有幽默感,不会与人相处。久而久之,连程序员自己也这样认为自己。虽然因为工作的特殊性,缺少女性朋友,交流机会少,以至于大部分程序员都是单身。但程序员并不是都非常的呆板,即使工作繁忙,但是对于生活细节还是会非常在意,运用自己所学知识,为生活带来新鲜感。

今天主要讲解如何做一个有仪式感的程序员。利用 Python 每天给你心爱的人,发送邮件信息,来一次不一样的早安问候。

关注,转发,私信小编“01”即可免费获取源码+Python学习资料!

程序员的撩妹方式,用Python 助你追到心爱的人

本篇文章的灵感来源于我有一天爬取某地方天气状况,想到自己学习过邮件发送的知识,于是便着手实现将某个地点每天的天气状况以邮件的形式进行发送。

实战分析

我们从中国天气(http://www.weather.com.cn/)获取城市代码、名称和天气状况。

1.城市信息

程序员的撩妹方式,用Python 助你追到心爱的人

我国主要分为八大地区,其中每个地区下又包括各个省份信息,点击省份,跳转到新的页面,其中包括该省份各个县级以及乡级行政区。

程序员的撩妹方式,用Python 助你追到心爱的人

代码方面主要分为两部分,先爬取到各个省份的 URL,接着再爬取每个省份下的城市代码信息。


def parse_url(url):
'''
 查询每个地区的省会url,下一步进行跳转
 :param url:
 :return: 省会urls
 '''
 provinces = []
 text = get_page(url)
 doc = pq(text)
 items = doc('.conMidtab2 > table > tr:nth-child(3) > td.rowsPan').items()
 name_set = set()
for item in items: 
 province_url = 'http://www.weather.com.cn' + item.find('a').attr('href')
 province_name = item.find('a').text()
 province = {
'province_url': province_url,
'province_name': province_name
 }
if province_name not in name_set:
 name_set.add(province_name)
 provinces.append(province)
else:
break
return provinces
def get_city_id(curl):
'''
 读取每个省下的城市信息
 :param curl:
 :return: 城市代码和名称
 '''
 cities = []
 text = get_page(curl)
 pattern = re.compile('<td width="83" height="23".*?<a.*?href=".*?weather/(.*?).shtml".*?>(.*?)</a></td>', re.S)
 results = re.findall(pattern, text)
 n = 0
 name_set = set()
for item in results:
 id = item[0]
 name = item[1]
 city = {
'id': id,
'name': name
 }
if name not in name_set:
 name_set.add(name)
 cities.append(city)
else:
continue
return cities

2.天气状况

在 http://www.weather.com.cn/weather/101010200.shtml 页面获取当天的天气状况,其中 101010200 即为上述我们得到的城市代码。


def get_weather(url):
'''
 获取天气预报的主要信息
 :param url:
 :return:
 '''
 text = get_page(url)
 html = etree.HTML(text)
 result = html.xpath('//li[@class="sky skyid lv3 on"]')[0]
 wea = result.xpath('p[@class="wea"]/text()')[0].replace('\n', '').replace('\t', '')
 tem = result.xpath('p[@class="tem"]')[0].xpath('string(.)').replace('\n', '').replace('\t','') # string()提取多个子节点中的文本
 win = result.xpath('p[@class="win"]')[0].xpath('string(.)').replace('\n', '').replace('\t', '')
return (wea, tem, win)

3.邮件发送

邮件发送涉及到两个邮箱之间的传输,我这里使用网易邮箱作为发送方,作为发送方,需要获取授权码,QQ 邮箱作为接收方。


def send_email(mess):
# SMTP服务器以及相关配置信息
 smtp_server = 'smtp.163.com' #163邮箱用到的SMTP服务器
 from_addr = '[email protected]'
 password = ' xxxx' #上面代码中发送方是163邮箱,所以密码不是邮箱的登录密码,而是手动开启SMTP协议后设置或分配的授权码!,但如果是Gmail则使用的密码是登录密码
 to_addr = '[email protected]'
 msg = MIMEText(mess, 'plain', 'utf-8')
# 如果没有加入如下代码,则会被识别为垃圾邮件
# 1.创建邮件(写好邮件内容、发送人、收件人和标题等)
 msg['From'] = format_addr('天气卫士 <%s>' % from_addr) # 发件人昵称和邮箱
 msg['To'] = format_addr('管理员 <%s>' % to_addr) # 收件人昵称和邮箱
 msg['Subject'] = Header('来自acorn的问候……', 'utf-8').encode() # 邮件标题
# 2.登录账号
 server = smtplib.SMTP(smtp_server, 25)
 server.login(from_addr, password)
# 3.发送邮件
 server.sendmail(from_addr, [to_addr], msg.as_string())
 server.quit()

4.定时发送

设置程序为开机自动运行。

程序员的撩妹方式,用Python 助你追到心爱的人

E:
cd E:\PycharmWspace\PythonSpider\cdsn_learn01
python weather_spider.py

每天当你打开电脑,就会发送消息给你可爱的人。运行结果如下。

程序员的撩妹方式,用Python 助你追到心爱的人

总结

这次的小程序只是一种尝试,虽然我们程序员平时都和代码打交道,但是这并不影响我们做个有趣的人,结合自己掌握的技能,也可以做出属于我们程序员独有的浪漫。

相关推荐