最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python實(shí)現(xiàn)定時(shí)報(bào)天氣的示例代碼

 更新時(shí)間:2021年11月12日 09:44:35   作者:弈鳴coding  
本文主要介紹了使用python實(shí)現(xiàn)定時(shí)報(bào)天氣,只需要讓爬蟲程序每天自動(dòng)為你發(fā)送,下面就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下

前言

如果你和我一樣偶爾看看股票,看看自己關(guān)注的股票是漲了還是跌了,或者想快速獲取到想看的頭條新聞,我們不必把過多的注意力放在去尋找上面,我們只需要讓爬蟲程序每天自動(dòng)為你發(fā)送你想要了解的信息就可以了,這樣就能掌控我們的注意力,更好的去享受生活。

一.分析爬取目標(biāo)

這里就不爬取股票的信息,我來爬一個(gè)天氣預(yù)報(bào)的信息,然后實(shí)現(xiàn)每天定時(shí)發(fā)送。打開下面的鏈接就能跳轉(zhuǎn)到中國(guó)氣象網(wǎng)
http://www.weather.com.cnnn/

在這里插入圖片描述

點(diǎn)擊溫度那個(gè)位置就可以進(jìn)入下面的圖

在這里插入圖片描述

我們可以看到7天的天氣和8-15天的天氣,再往后對(duì)我們來說就沒必要了。我們查看七日的天氣預(yù)報(bào),直接爬11日的天氣,鼠標(biāo)右鍵->檢查->Network->刷新網(wǎng)頁->查看列表第一個(gè),再點(diǎn)擊preview

在這里插入圖片描述

可以看到數(shù)據(jù)在HTML里面,然后回到element

在這里插入圖片描述

可以發(fā)現(xiàn),溫度數(shù)據(jù)放在<p class="tem">之下?!岸嘣啤彼诘奈恢檬?code><p title="晴" class="wea">晴</p>。

在這里插入圖片描述

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
#這里對(duì)應(yīng)的是我選的城市,可以換自己所在城市
url = 'http://www.weather.com.cn/weather/101010100.shtml'

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

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

# 發(fā)送requests請(qǐng)求,并把響應(yīng)的內(nèi)容賦值到變量res中。

print(res.text)

# 打印出res對(duì)象的網(wǎng)頁源代碼

print(res.status_code)

# 檢查響應(yīng)狀態(tài)是否正常

看結(jié)果可以看到是響應(yīng)是正常的,但是出現(xiàn)了亂碼。但是莫慌。加上一句res.encoding='utf-8'就行了。

在這里插入圖片描述

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

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)

#發(fā)送requests請(qǐng)求,并把響應(yīng)的內(nèi)容賦值到變量res中

res.encoding='utf-8'



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

#使用bs模塊解析獲取到的數(shù)據(jù)

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

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

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

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

print(data_temperature.text)

#取出變量data_temperature中的字符串內(nèi)容,并打印

print(data_weather.text)

#取出變量data_weather中的字符串內(nèi)容,并打印

可以成功的得到需要的數(shù)據(jù)。

在這里插入圖片描述

其實(shí)最難的不是爬蟲,爬這種信息新手應(yīng)該都會(huì),接下里才是重頭戲。

二.信息的發(fā)送

如果我們想要實(shí)現(xiàn)發(fā)送郵件,這里以qq郵件為例要經(jīng)過以下的步驟:

  • 連接郵件服務(wù)器
  • 使用郵箱賬號(hào)密碼登錄
  • 填寫收件人,主題,正文等
  • 發(fā)送郵件

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

1.連接服務(wù)器

SMTP代表簡(jiǎn)單郵件傳輸協(xié)議,相當(dāng)于一種計(jì)算機(jī)之間發(fā)郵件的約定

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

看下面的代碼

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

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

用SMTP對(duì)象的connect()方法連接服務(wù)器,第一個(gè)參數(shù)是獲取到的服務(wù)器地址,第二個(gè)參數(shù)是SMTP端口號(hào)——25。端口號(hào)的選擇不是唯一的,但是25是一個(gè)最簡(jiǎn)單、最基礎(chǔ)的端口號(hào),所以我們填25。

2.獲取賬號(hào)和密碼

此密碼非彼密碼,這個(gè)密碼需要我們?nèi)サ竭@里獲?。篽ttps://mail.qq.com/,登錄你的郵箱。然后點(diǎn)擊位于頂部的【設(shè)置】按鈕,選擇【賬戶設(shè)置】。

在這里插入圖片描述

下拉到這個(gè)位置

在這里插入圖片描述

點(diǎn)擊開啟第一個(gè),然后得到授權(quán)碼,如果以前獲取過但是忘了,就需要發(fā)送短信重新獲取,這個(gè)碼一定不要外漏?。。?br />

在這里插入圖片描述

import smtplib

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

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

qqmail.connect(mailhost,25)
#連接服務(wù)器,第一個(gè)參數(shù)是服務(wù)器地址,第二個(gè)參數(shù)是SMTP端口號(hào)。

sender = input('請(qǐng)輸入你的郵箱:')
#獲取郵箱賬號(hào)

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

qqmail.login(sender,password)
#登錄郵箱,第一個(gè)參數(shù)為郵箱賬號(hào),第二個(gè)參數(shù)為郵箱密碼

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

所填密碼就是剛才獲取的授權(quán)碼

3.填寫主題和撰寫正文

在這里就需要用到email庫。

from email.mime.text import MIMEText

from email.header import Header

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

#輸入你的郵件正文

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

#實(shí)例化一個(gè)MIMEText郵件對(duì)象,該對(duì)象需要寫進(jìn)三個(gè)參數(shù),分別是郵件正文,文本格式和編碼

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

#用input()獲取郵件主題  

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

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

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

4.發(fā)送郵件和退出郵箱

將前面的代碼整合以下

from email.mime.text import MIMEText

from email.header import Header

#引入Header和MIMEText模塊

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

#輸入你的郵件正文

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

#實(shí)例化一個(gè)MIMEText郵件對(duì)象,該對(duì)象需要寫進(jìn)三個(gè)參數(shù),分別是郵件正文,文本格式和編碼

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

#用input()獲取郵件主題

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

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

qqmail.quit()
#退出郵箱

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

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

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

三.定時(shí)發(fā)送

關(guān)于時(shí)間,其實(shí)Python有兩個(gè)內(nèi)置的標(biāo)準(zhǔn)庫——time和datetime,但是我們不用,誒,就是玩,我們可以用第三方庫schedule其實(shí)是有原因的:對(duì)于我們需要的定時(shí)功能,time和datetime當(dāng)然能實(shí)現(xiàn),但操作邏輯會(huì)相對(duì)復(fù)雜;而schedule就是可以直接解決定時(shí)功能,代碼比較簡(jiǎn)單,這是我們選擇schedule的原因。
官方文檔鏈接:https://pypi.org/project/schedule/
根據(jù)文檔我們做一個(gè)每3秒運(yùn)行一次的程序

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

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

四.效果

在這里插入圖片描述

這里我定的下午三點(diǎn)四十六,然后發(fā)送成功,我打開我的郵箱確實(shí)能收到

在這里插入圖片描述

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

這篇文章不在于爬取天氣信息這塊,而是通過這種方式去實(shí)現(xiàn)定時(shí)發(fā)送郵件,只要用的好能為自己省下很多的時(shí)間和精力去在信息大海里面查找自己想要的信息。

到此這篇關(guān)于使用python實(shí)現(xiàn)定時(shí)報(bào)天氣的示例代碼的文章就介紹到這了,更多相關(guān)python 定時(shí)報(bào)天氣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何用OpenCV -python3實(shí)現(xiàn)視頻物體追蹤

    如何用OpenCV -python3實(shí)現(xiàn)視頻物體追蹤

    OpenCV是一個(gè)基于BSD許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺庫,可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。這篇文章主要介紹了如何用OpenCV -python3實(shí)現(xiàn)視頻物體追蹤,需要的朋友可以參考下
    2019-12-12
  • Windows下實(shí)現(xiàn)Python2和Python3兩個(gè)版共存的方法

    Windows下實(shí)現(xiàn)Python2和Python3兩個(gè)版共存的方法

    這篇文章主要介紹了Windows下實(shí)現(xiàn)Python2和Python3兩個(gè)版共存的方法,本文詳細(xì)的給出了操作步驟和設(shè)置完成后的使用方法,需要的朋友可以參考下
    2015-06-06
  • Python函數(shù)之zip函數(shù)的介紹與實(shí)際應(yīng)用

    Python函數(shù)之zip函數(shù)的介紹與實(shí)際應(yīng)用

    zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象(python2 返回的是這些元組組成的列表 ),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)之zip函數(shù)實(shí)際應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • python實(shí)現(xiàn)的防DDoS腳本

    python實(shí)現(xiàn)的防DDoS腳本

    實(shí)現(xiàn)原理是,查詢netstat的連接數(shù),同IP超過一定連接的用iptables封禁一定時(shí)間,自動(dòng)封禁,自動(dòng)解封。
    2011-02-02
  • Python判斷素?cái)?shù)的3種方法及for-else語句的用法介紹

    Python判斷素?cái)?shù)的3種方法及for-else語句的用法介紹

    素?cái)?shù)又叫質(zhì)數(shù),指的是>1的整數(shù)中,只能被1和這個(gè)數(shù)本身整除的數(shù),這篇文章主要給大家介紹了關(guān)于Python判斷素?cái)?shù)的3種方法及for-else語句的用法介紹的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • python?OpenCV圖像金字塔

    python?OpenCV圖像金字塔

    這篇文章主要介紹了python?OpenCV圖像金字塔,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Python學(xué)習(xí)之configparser模塊的使用詳解

    Python學(xué)習(xí)之configparser模塊的使用詳解

    ConfigParser是用來讀取配置文件的包。這篇文章主要通過一些簡(jiǎn)單的實(shí)例帶大家了解一下ConfigParser模塊的具體使用,感興趣的小伙伴跟隨小編一起了解一下
    2023-01-01
  • python進(jìn)階之魔術(shù)方法詳解

    python進(jìn)階之魔術(shù)方法詳解

    這篇文章主要為大家介紹了python進(jìn)階之魔術(shù)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Django forms組件的使用教程

    Django forms組件的使用教程

    服務(wù)端假設(shè)所有用戶提交的數(shù)據(jù)都是不可信任的,所以Django框架內(nèi)置了form組件來驗(yàn)證用戶提交的信息,這篇文章主要介紹了Django forms組件的使用教程,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Window 64位下python3.6.2環(huán)境搭建圖文教程

    Window 64位下python3.6.2環(huán)境搭建圖文教程

    這篇文章主要為大家詳細(xì)介紹了Window 64位下python3.6.2環(huán)境搭建圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評(píng)論

海原县| 绥宁县| 通山县| 辽宁省| 乌鲁木齐县| 芒康县| 林口县| 尼勒克县| 儋州市| 芮城县| 霍邱县| 广州市| 周至县| 尤溪县| 田东县| 来凤县| 章丘市| 榆树市| 辉县市| 颍上县| 广东省| 山东省| 定日县| 呼玛县| 叶城县| 桐乡市| 温泉县| 方城县| 明溪县| 荔波县| 平谷区| 三台县| 安泽县| 鲜城| 武定县| 讷河市| 广河县| 抚宁县| 龙井市| 乐安县| 三台县|