Python 小技能之抓取天氣信息發(fā)送給小姐姐

文 |?潮汐
來源:Python 技術(shù)「ID: pythonall」

每天一個 Python 小技巧,你學(xué)廢了嗎?今天文章主要講解如何將天氣預(yù)報信息爬取下來并發(fā)送給小姐姐,感興趣的朋友不妨試試,說不定會有意外收獲呢!
抓取數(shù)據(jù)
爬蟲的基本思路簡易了解就三步:下載數(shù)據(jù)(根據(jù)需要爬取的 url 設(shè)定用戶代理)、解析數(shù)據(jù)(編寫爬取規(guī)則并獲得數(shù)據(jù))、保存數(shù)據(jù)。
知道上述步驟后咱們的需求是首先找到中國天氣網(wǎng)鏈接 https://tianqi.so.com/weather/ ,抓取中國天氣網(wǎng)的數(shù)據(jù),獲取天氣信息部分代碼如下:
data_list = []response = requests.get(url)html_doc = response.textsoup = BeautifulSoup(html_doc, 'lxml') # 自動補(bǔ)全html代碼,并按html代碼格式返回wendu = soup.find('div', class_='temperature').get_text()tianqi = soup.find('div', class_='weather-icon-wrap').get_text()data_list.append("現(xiàn)在的溫度:%s\n現(xiàn)在天氣情況:%s" % (wendu, tianqi))list = soup.find_all('ul', class_='weather-columns')for item in list:data_list.append(item.get_text())print("列表數(shù)據(jù):",data_list)a = 1#創(chuàng)建PrettyTable對象,用于將天氣數(shù)據(jù)用表格的方式輸出tb = pt.PrettyTable()tb.field_names = ["日期","天氣","詳情"]for item in data_list:# print(a)if a != 1:tb.add_row([item.strip().split()[0]+item.strip().split()[1],item.strip().split()[2],item.strip().split()[3]])else: print(item.strip())a+=1print(tb)return tb
輸出結(jié)果為:
現(xiàn)在的溫度:23現(xiàn)在天氣情況:多云+-------------+--------------+----------------+| 日期 | 天氣 | 詳情 |+-------------+--------------+----------------+| 今天(07-28) | 雷陣雨 | 22/31℃優(yōu)西南風(fēng) || 明天(07-29) | 多云 | 24/32℃良西南風(fēng) || 周四(07-30) | 陰 | 25/33℃良西南風(fēng) || 周五(07-31) | 雷陣雨 | 24/33℃良西南風(fēng) || 周六(08-01) | 多云 | 25/34℃良西南風(fēng) || 周日(08-02) | 中雨轉(zhuǎn)雷陣雨 | 24/33℃優(yōu)南風(fēng) || 周一(08-03) | 多云 | 25/32℃優(yōu)東風(fēng) || 周二(08-04) | 小雨 | 22/32℃良東南風(fēng) || 周三(08-05) | 小雨轉(zhuǎn)陰 | 22/32℃良南風(fēng) || 周四(08-06) | 小雨 | 22/32℃良東北風(fēng) || 周五(08-07) | 多云轉(zhuǎn)小雨 | 21/33℃良南風(fēng) || 周六(08-08) | 小雨 | 21/34℃良西南風(fēng) || 周日(08-09) | 多云轉(zhuǎn)小雨 | 21/34℃良南風(fēng) || 周一(08-10) | 小雨 | 21/34℃良南風(fēng) || 周二(08-11) | 多云轉(zhuǎn)小雨 | 21/33℃良南風(fēng) |+-------------+--------------+----------------+
發(fā)送郵件
將抓取的數(shù)據(jù)發(fā)送到相應(yīng)的郵箱中,這里我將內(nèi)容發(fā)送到自己的 QQ 郵箱,發(fā)送郵箱詳細(xì)思路請詳見 今天,我用 Python 給武漢人民發(fā)一封郵件,發(fā)送郵件代碼如下:
實現(xiàn)代碼:
# 收件人receiver = receivermail_title = '小姐姐,請查收今天以及往后15天的天氣預(yù)報,愿你三冬暖,春不寒'mail_body = str(msg)# 創(chuàng)建一個實例message = MIMEText(mail_body, 'plain', 'utf-8') # 郵件正文# (plain表示mail_body的內(nèi)容直接顯示,也可以用text,則mail_body的內(nèi)容在正文中以文本的形式顯示,需要下載)# 郵件的發(fā)件人message['From'] = sender# 郵件的收件人message['To'] = receiver# 郵件主題message['Subject'] = Header(mail_title, 'utf-8')# 創(chuàng)建發(fā)送郵件連接smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)# 連接發(fā)送郵件的服務(wù)器smtp.connect(smtpserver)# 登錄到郵件服務(wù)器smtp.login(username, password)# 填入郵件的相關(guān)信息并發(fā)送smtp.sendmail(sender, receiver, message.as_string())smtp.quit()
調(diào)用發(fā)送郵件方法
if __name__ == '__main__':sender = '[email protected]'# 發(fā)件人郵箱的SMTP服務(wù)器(即sender的SMTP服務(wù)器)smtpserver = 'smtp.qq.com'# 發(fā)件人郵箱的用戶名和授權(quán)碼(不是登陸郵箱的密碼)username = 'XXX'# 郵箱授權(quán)碼password = 'XXXXXXXXX'url1 = 'https://tianqi.so.com/weather/'receiver_list ='[email protected]'tb = get_Data(url1) #獲得每一個用戶的數(shù)據(jù)send_mail(tb,receiver_list) #發(fā)送郵件
發(fā)送結(jié)果如下:

總結(jié)
今天的文章主要是使用 Python 爬蟲和郵件發(fā)送功能兩者結(jié)合使用的場景,如果學(xué)廢的小伙伴請 扣 1,咱們明天見!
PS:公號內(nèi)回復(fù)「Python」即可進(jìn)入Python 新手學(xué)習(xí)交流群,一起 100 天計劃!
老規(guī)矩,兄弟們還記得么,右下角的 “在看” 點一下,如果感覺文章內(nèi)容不錯的話,記得分享朋友圈讓更多的人知道!


【代碼獲取方式】
識別文末二維碼,回復(fù):200730評論
圖片
表情
