欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3爬蟲教程之利用Python實現(xiàn)發(fā)送天氣預報郵件

 更新時間:2018年12月16日 16:25:54   作者:TM0831  
這篇文章主要給大家介紹了關于Python3爬蟲教程之利用Python實現(xiàn)發(fā)送天氣預報郵件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧

前言

此次的目標是爬取指定城市的天氣預報信息,然后再用Python發(fā)送郵件到指定的郵箱。

下面話不多說了,來一起看看詳細的實現(xiàn)過程吧

一、爬取天氣預報

1、首先是爬取天氣預報的信息,用的網(wǎng)站是中國天氣網(wǎng),網(wǎng)址是http://www.weather.com.cn/static/html/weather.shtml,任意選擇一個城市(比如武漢),然后要爬取的內容為下面的部分:

先查看網(wǎng)頁源代碼,并沒有找到第一張圖中的內容,說明是這些天氣信息是通過別的方式加載出來的。我們打開開發(fā)者工具,點擊XHR選項,發(fā)現(xiàn)沒有任何內容,但是點擊JS選項后可以找到如下內容:

然后就是把URL復制下來進行爬取,不過要注意加上User-Agent和Referer字段,而且如果一直用一個User-Agent的話就會被識別出來,所以我們需要定義一個函數(shù)來返回隨機的User-Agent以供使用。

def get_agent():
 import random
 user_agent_list = [
  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
  "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
  "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
  "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
  "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
  "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
  "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
  "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
  "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
  "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
  "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
 ]
 return random.choice(user_agent_list)

爬取后的結果如下:

{'PM2.5': '158',
'城市': '武漢',
'天氣': '多云',
'日期': '12月16日(星期日)',
'洗車指數(shù)': '無雨且風力較小,易保持清潔度。',
'溫度': '12℃',
'相對濕度': '47%',
'穿衣指數(shù)': '建議著厚外套加毛衣等服裝。',
'紫外線指數(shù)': '涂擦SPF大于15、PA+防曬護膚品。',
'風力等級': '2級',
'風向': '西南風'}

2、我們已經(jīng)能爬取天氣預報的內容了,但是如果我們想要爬取任意城市的天氣預報,又要怎么辦呢?

先找?guī)讉€城市對應的鏈接看一下:武漢(http://www.weather.com.cn/weather1d/101200101.shtml)、廣州(http://www.weather.com.cn/weather/101280101.shtml?)、杭州(http://www.weather.com.cn/weather1d/101210101.shtml),很明顯每個城市有一個對應的編碼,而我們只要獲得全國主要城市的編碼信息,也就能得到這些城市的天氣預報了。

這一步花費了我不少時間,問題就在于從哪里得到這些編碼信息,最后找到了一個辦法。首先是查看國內天氣預報,當我們的鼠標移到某個省的地圖上的時候,就會顯示其省會的天氣情況:

而當我們用鼠標左鍵點擊的時候,就能夠查看這個省的整體天氣情況:

打開開發(fā)者工具,點擊XHR選項,可以發(fā)現(xiàn)有如下內容,而這些數(shù)據(jù)里就包含著我們需要的編碼信息:

做到這一步我們就可以獲得全國主要城市的編碼信息了,不過要注意的是,這些編碼并不都是能直接添加到我們的代碼中進行使用的,通過觀察可以發(fā)現(xiàn),四個直轄市的編碼是不需要做改變的,其余的省需要在得到的編碼后面加上一個01。

二、發(fā)送郵件

要使用Python來發(fā)送郵件,需要使用兩個模塊:smtplib和email。這兩個模塊是Python自帶的,只需import即可使用,其中smtplib模塊主要負責發(fā)送郵件,email模塊主要負責構造郵件。

我使用的是163郵箱,用別的郵箱也可以,不過方法會有所不同。在發(fā)送郵件之前,需要先設置授權碼,在設置完之后,要記住你的授權碼,在后面會用到的:

一個測試的例子如下:

import smtplib
from email.header import Header
from email.mime.text import MIMEText

sender = "xxx@163.com" # 發(fā)件人的郵箱
password = "xxx" # 這里的密碼不是登陸郵箱的密碼,而是授權碼
receiver = "xxx@163.com" # 收件人的郵箱,可以是同一個
mail = MIMEText("這是郵件內容", 'plain', 'utf-8') # 郵件內容
mail['Subject'] = Header('這是郵件主題', 'utf-8') # 郵件主題
mail['From'] = sender # 發(fā)件人
mail['To'] = receiver # 收件人
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com', 25) # 連接郵箱服務器
smtp.login(sender, password) # 登錄郵箱
smtp.sendmail(sender, receiver, mail.as_string()) # 第三個是把郵件內容變成字符串
smtp.quit() # 發(fā)送完畢,退出
print('郵件已成功發(fā)送!')

有幾點要注意的是:

(1)mail['From']和mail['To']是一定要加上的,不能省略;

(2)由于使用的是163郵箱,所以連接服務器的時候使用的是smtp.163.com;

(3)郵件主題里不要使用“test”,不然會被標記為垃圾郵件。

三、運行結果

首先是程序運行的結果截圖:

然后打開郵箱查看:

完整代碼已上傳到GitHub:https://github.com/QAQ112233/Weather本地下載

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • 淺談python3.6的tkinter運行問題

    淺談python3.6的tkinter運行問題

    今天小編就為大家分享一篇淺談python3.6的tkinter運行問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python pysnmp使用方法及代碼實例

    Python pysnmp使用方法及代碼實例

    這篇文章主要介紹了Python pysnmp使用方法及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • python 捕獲shell腳本的輸出結果實例

    python 捕獲shell腳本的輸出結果實例

    下面小編就為大家?guī)硪黄猵ython 捕獲shell腳本的輸出結果實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Django項目中表的查詢的操作

    Django項目中表的查詢的操作

    這篇文章主要介紹了Django項目中表的查詢的操作,文中給大家提到了Django項目 ORM常用的十三種查詢方法,結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • python連接字符串的方法小結

    python連接字符串的方法小結

    這篇文章主要介紹了python連接字符串的方法,實例總結了幾種常用的Python連接字符串的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python探索之ModelForm代碼詳解

    Python探索之ModelForm代碼詳解

    這篇文章主要介紹了Python探索之ModelForm代碼詳解,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • Python argv用法詳解

    Python argv用法詳解

    這篇文章主要介紹了Python argv用法詳解的相關資料,涉及到python argv相關知識,需要的朋友可以參考下
    2016-01-01
  • Yolov5更換BiFPN的詳細步驟總結

    Yolov5更換BiFPN的詳細步驟總結

    將YOLOv5中的PANet層修改為EfficientDet-BiFPN,實現(xiàn)自上而下與自下而上的深淺層特征雙向融合,明顯提升YOLOv5算法檢測精度,下面這篇文章主要給大家介紹了關于Yolov5更換BiFPN的詳細步驟,需要的朋友可以參考下
    2022-12-12
  • python簡單文本處理的方法

    python簡單文本處理的方法

    這篇文章主要介紹了python簡單文本處理的方法,涉及Python針對文本文件及字符串操作的相關技巧,需要的朋友可以參考下
    2015-07-07
  • 使用Node.js和Socket.IO擴展Django的實時處理功能

    使用Node.js和Socket.IO擴展Django的實時處理功能

    這篇文章主要介紹了使用Node.js和Socket.IO擴展Django的實時處理功能,用異步處理實時功能是相當強大的,文中給出的例子是建立一個實時聊天室,需要的朋友可以參考下
    2015-04-04

最新評論