亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python實現定時報天氣

發布時間:2021-11-12 13:44:29 來源:億速云 閱讀:176 作者:小新 欄目:開發技術

小編給大家分享一下如何使用python實現定時報天氣,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一.分析爬取目標

這里就不爬取股票的信息,我來爬一個天氣預報的信息,然后實現每天定時發送。打開下面的鏈接就能跳轉到中國氣象網
http://www.weather.com.cnnn/

如何使用python實現定時報天氣

點擊溫度那個位置就可以進入下面的圖

如何使用python實現定時報天氣

我們可以看到7天的天氣和8-15天的天氣,再往后對我們來說就沒必要了。我們查看七日的天氣預報,直接爬11日的天氣,鼠標右鍵->檢查->Network->刷新網頁->查看列表第一個,再點擊preview

如何使用python實現定時報天氣

可以看到數據在HTML里面,然后回到element

如何使用python實現定時報天氣

可以發現,溫度數據放在<p class="tem">之下。“多云”所在的位置是<p title="晴" class="wea">晴</p>

如何使用python實現定時報天氣

import requests

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}

# 封裝headers
#這里對應的是我選的城市,可以換自己所在城市
url = 'http://www.weather.com.cn/weather/101010100.shtml'

# 把URL鏈接賦值到變量url上

res = requests.get(url, headers=headers)

# 發送requests請求,并把響應的內容賦值到變量res中。

print(res.text)

# 打印出res對象的網頁源代碼

print(res.status_code)

# 檢查響應狀態是否正常

看結果可以看到是響應是正常的,但是出現了亂碼。但是莫慌。加上一句res.encoding='utf-8'就行了。

如何使用python實現定時報天氣

接下來就可以寫完整的爬取信息的代碼了

import requests

from bs4 import BeautifulSoup



headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}

#封裝headers

url='http://www.weather.com.cn/weather/101010100.shtml'

#把URL鏈接賦值到變量url上

res=requests.get(url,headers=headers)

#發送requests請求,并把響應的內容賦值到變量res中

res.encoding='utf-8'



bsdata=BeautifulSoup(res.text,'html.parser')

#使用bs模塊解析獲取到的數據

data_temperature= bsdata.find(class_='tem')

#使用find()取出天氣的溫度數據

data_weather= bsdata.find(class_='wea')

#使用find()取出天氣的文字描述

print(data_temperature.text)

#取出變量data_temperature中的字符串內容,并打印

print(data_weather.text)

#取出變量data_weather中的字符串內容,并打印

可以成功的得到需要的數據。

如何使用python實現定時報天氣

其實最難的不是爬蟲,爬這種信息新手應該都會,接下里才是重頭戲。

二.信息的發送

如果我們想要實現發送郵件,這里以qq郵件為例要經過以下的步驟:

  • 連接郵件服務器

  • 使用郵箱賬號密碼登錄

  • 填寫收件人,主題,正文等

  • 發送郵件

所以連接服務器要用到用到smtplib庫,填寫主題和撰寫正文,需要用到email庫(python真的是yyds)

1.連接服務器

SMTP代表簡單郵件傳輸協議,相當于一種計算機之間發郵件的約定

smtplib是不需要安裝的,smtplib是python的一個內置庫,有興趣的小伙伴可以看看官方文檔

看下面的代碼

import smtplib
mailhost='smtp.qq.com'
#把qq郵箱的服務器地址賦值到變量mailhost上,地址需要是字符串的格式。
qqmail = smtplib.SMTP()
#實例化一個smtplib模塊里的SMTP類的對象,這樣就可以SMTP對象的方法和屬性了
qqmail.connect(mailhost,25)
#連接服務器,第一個參數是服務器地址,第二個參數是SMTP端口號

**mailhost=‘smtp.qq.com'**這句是qq郵箱的服務器地址,這個是可以查得到的

用SMTP對象的connect()方法連接服務器,第一個參數是獲取到的服務器地址,第二個參數是SMTP端口號——25。端口號的選擇不是唯一的,但是25是一個最簡單、最基礎的端口號,所以我們填25。

2.獲取賬號和密碼

此密碼非彼密碼,這個密碼需要我們去到這里獲取:https://mail.qq.com/,登錄你的郵箱。然后點擊位于頂部的【設置】按鈕,選擇【賬戶設置】。

如何使用python實現定時報天氣

下拉到這個位置

如何使用python實現定時報天氣

點擊開啟第一個,然后得到授權碼,如果以前獲取過但是忘了,就需要發送短信重新獲取,這個碼一定不要外漏!!!

如何使用python實現定時報天氣

import smtplib

mailhost='smtp.qq.com'
#把qq郵箱的服務器地址賦值到變量mailhost上

qqmail = smtplib.SMTP()
#實例化一個smtplib模塊里的SMTP類的對象,這樣就可以SMTP對象的方法和屬性了

qqmail.connect(mailhost,25)
#連接服務器,第一個參數是服務器地址,第二個參數是SMTP端口號。

sender = input('請輸入你的郵箱:')
#獲取郵箱賬號

password = input('請輸入你的密碼:')
#獲取郵箱密碼

qqmail.login(sender,password)
#登錄郵箱,第一個參數為郵箱賬號,第二個參數為郵箱密碼

receiver=input('請輸入收件人的郵箱:')
#獲取收件人的郵箱

所填密碼就是剛才獲取的授權碼

3.填寫主題和撰寫正文

在這里就需要用到email庫。

from email.mime.text import MIMEText

from email.header import Header

content=input('請輸入郵件正文:')

#輸入你的郵件正文

message = MIMEText(content, 'plain', 'utf-8')

#實例化一個MIMEText郵件對象,該對象需要寫進三個參數,分別是郵件正文,文本格式和編碼

subject = input('請輸入你的郵件主題:')

#用input()獲取郵件主題  

message['Subject'] = Header(subject, 'utf-8')

我們還需要引入了email庫中的MIMEText模塊和Header模塊
最后一行代碼:在等號的右邊,是實例化了一個Header郵件頭對象,該對象需要寫入兩個參數,分別是郵件主題和編碼,然后賦值給等號左邊的變量message[‘Subject'],message[‘Subject']就代表著根據MIMEText類里面的Subject的屬性名取到該屬性

代碼有注釋還不明白的話可以去看看文檔,

4.發送郵件和退出郵箱

將前面的代碼整合以下

from email.mime.text import MIMEText

from email.header import Header

#引入Header和MIMEText模塊

content=input('請輸入郵件正文:')

#輸入你的郵件正文

message = MIMEText(content, 'plain', 'utf-8')

#實例化一個MIMEText郵件對象,該對象需要寫進三個參數,分別是郵件正文,文本格式和編碼

subject = input('請輸入你的郵件主題:')

#用input()獲取郵件主題

message['Subject'] = Header(subject, 'utf-8')

qqmail.sendmail(sender, receiver, message.as_string())

qqmail.quit()
#退出郵箱

sendmail() 發送郵件,括號里面有三個參數,第1個是發件人的郵箱地址,第2個是收件人的郵箱地址,第3個是正文,但必須是字符串格式,所以用as_string()函數轉換了一下。

但是我們希望發送成功后能顯示“郵件發送成功”,失敗的時候能提示我們“郵件發送失敗”,可以使用try語句來實現。

try:
    qqmail.sendmail(sender, receiver, message.as_string())
    print ('郵件發送成功')
except:
    print ('郵件發送失敗')
qqmail.quit()

三.定時發送

關于時間,其實Python有兩個內置的標準庫——time和datetime,但是我們不用,誒,就是玩,我們可以用第三方庫schedule其實是有原因的:對于我們需要的定時功能,time和datetime當然能實現,但操作邏輯會相對復雜;而schedule就是可以直接解決定時功能,代碼比較簡單,這是我們選擇schedule的原因。
官方文檔鏈接:https://pypi.org/project/schedule/
根據文檔我們做一個每3秒運行一次的程序

import schedule
import time
#引入schedule和time模塊
def job():
    print("Working in progress...")
#定義一個叫job的函數,函數的功能是打印'I'm working...'
schedule.every(3).seconds.do(job)        
while True:
    schedule.run_pending()
    time.sleep(1)

也可以設置在某個時間發送,用法很多,這里就不展開。最后把這些代碼全部合并整合一下,下面看效果

四.效果

如何使用python實現定時報天氣

這里我定的下午三點四十六,然后發送成功,我打開我的郵箱確實能收到

如何使用python實現定時報天氣

這個功能我放在服務器上用了很久了,爬一些平時自己必看的信息,然后發送,減少了自己被其他東西吸引注意力的幾率。

以上是“如何使用python實現定時報天氣”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江山市| 德安县| 大安市| 隆化县| 阿图什市| 山西省| 吉林省| 大埔区| 西贡区| 岚皋县| 炎陵县| 龙江县| 岗巴县| 怀安县| 白水县| 苏州市| 兴山县| 潞西市| 霸州市| 界首市| 丘北县| 南郑县| 林芝县| 平凉市| 阿图什市| 疏勒县| 陵水| 蒙自县| 宁阳县| 繁昌县| 漳浦县| 高雄市| 桐柏县| 蒙城县| 阿拉尔市| 广元市| 霞浦县| 夏河县| 濮阳县| 肇东市| 文昌市|