目标:获取墨迹天气的整个8月份的温度情况,并以txt格式的文件发送到邮箱

环境:pyhton3.6   pycharm软件   163邮箱(163邮箱要打开授权码,才能发送成功)

思路:1.获取墨迹天气8月份的温度网页源码

2.使用正则表达式或解析器对源码进行筛选,得到有用的数据信息,本文使用正则表达式

3.将数据保存到txt文件

4.发送到邮箱

一、获取源码

获取墨迹天气的源码方法很多,本文使用的requests库,get()方法获取源码,网上有大量的教程,也可参考本人前面写的文章,此处不展开详讲。代码附上:

import request
from requests.exceptions import RequestException
url='https://tianqi.moji.com/weather/china/hubei/jiangxia-district'
header = {'User-Agent': 'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'}  # 模拟浏览器访问
response = requests.get(url,headers=header)
try:if response.status_code==200:return response.text
except RequestException:print("请求页面出错!!!")return None

二、筛选数据信息

本文筛选信息使用的是正则表达式,如何利用正则表达式筛选信息?首先先观察一张图片,注意红色方框的内容。

通过观察图片发现包含日期的代码:<em>01</em>、<em>02</em>、...其中em是html中的元素,是告诉浏览器把其中的文本表示为强调的内容。则正则表达式为:r'<em>(\d\d)</em>',获取日期的代码:

reg_date =r'<em>(\d\d)</em>' #获取日期

reg_num = re.compile(reg_date) #编译一下,匹配更快

regdalist = reg_num.findall(html) #全源码匹配

注意:最后输出的结果是以列表的形式输出

获取天气状况的网页源码是:alt="雷阵雨 "></b>     对应的正则表达式为 r'alt="(.*?)"></b>'

获取温度和风的状况源码是:<p>26/36°</p>   <p>东风&nbsp;&nbsp;3级</p>     对应的正则表达式为: r'<p>(.*?)</p>'

查看全部网页的源码的人会发现,有的地方也有类似<p>.....</p>的代码,正则表达式会否将其筛选出来?答案是:会的,不过很少,可以从列表中将其删除掉,留下我们需要的信息。

三、保存为txt文件

如何将数据保存在txt文件?

首先打开文件,如果没有则系统会自动创建,然后将其数据写入进去,最后关闭文件

例: htmlcode= asjgojdopajdsafjbfoso

pageFile = open('pageCode.txt','w')#以写的方式打开

pageCode.txt pageFile.write(htmlcode)#写入

pageFile.close()#开了记得关

四、将txt文件发送到邮箱

如何将附件发送到邮箱?

第一步选择发送方邮件的服务器和端口号,163邮箱的服务器对应的端口号是25,QQ邮箱的服务器对应的端口号是465

email_sever = 'smtp.163.com' #使用163邮箱

email_port = '25' #对应的端口号

第二步可先设置发送人和接收人的信息

email = MIMEMultipart()
email['From'] = formataddr(["xxxx",email_sender])  (xxxx:发件人用户名)
email['To'] = formataddr(["xxxx",email_receiver])  (xxxx:收件人用户名)
email['Subject'] = "xxxxxxx"           #发送的主题#正文内容
message = "XXXXXX"
textApart = MIMEText(message)
email.attach(textApart)#附件
txtFile = r'xxxxxxxxx'
txtApart = MIMEApplication(open(txtFile, 'rb').read())
txtApart.add_header('Content-Disposition', 'attachment',filename=('gbk','',txtFile))
email.attach(txtApart)

第四部发送邮件

def sendmail(mail_sever,mail_port,mail_sender,mail_pass,mail_receiver):try:mail = smtplib.SMTP(mail_sever,mail_port) #请求邮件服务器和端口mail.login(mail_sender, mail_pass)   #登录账号mail.sendmail(mail_sender, [mail_receiver], email.as_string()) #发送内容mail.quit()print("邮件发送成功!!!")except:mail.quit()print("邮件发送失败!!!")sendmail(email_sever,port,sender,sender_pass,receiver)

到此整个过程就完成。本文仅供参考!!!如有需要改进之处,请多多指教,谢谢!!!文末见全码。

参考资料:

https://www.cnblogs.com/Axi8/p/5757270.html  (参考其保存txt文件)

https://blog.csdn.net/handsomekang/article/details/9811355   (参考其发送带附件的邮件)

#获取墨迹天气中整个8月份的天气情况,数据保存为txt文件,并发送到邮箱
#coding utf-8
import requests
from requests.exceptions import RequestException
import re
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication#获取数据部分
def get_html(url):header = {'User-Agent': 'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_4)\AppleWebKit/537.36(KHTML, like Gecko) Chrome/52 .0.2743. 116 Safari/537.36'}  # 模拟浏览器访问response = requests.get(url,headers=header)    #请求访问链接try:if response.status_code==200:    #如果请求状态正常,则返回源码return response.textexcept RequestException:           #抛出异常信息print("请求页面出错!!!")return Nonedef html_Select(html):num=0num_o=0reg_date =r'<em>(\d\d)</em>'          #获取日期reg_st  = r'alt="(.*?)"></b>'         #获取天气状况reg_team = r'<p>(.*?)</p>'reg_num = re.compile(reg_date)       #编译一下,匹配更快reg_wea = re.compile(reg_st)reg_temp = re.compile(reg_team)regdalist = reg_num.findall(html)     #全源码匹配regstlist = reg_wea.findall(html)regtelist = reg_temp.findall(html)del regdalist[0]del regtelist[62]#print(regdalist)#print(regstlist)#print(regtelist)temp_File = open('8月份温度.txt', 'w')while num<32:for data in regdalist[num:num+1]:temp_File.write(data)for weather in regstlist[num:num+1]:temp_File.write(weather)for temp in regtelist[num_o:num_o+2]:temp_File.write(temp + "\n")#temp_File.write("=================================")num += 1num_o +=2temp_File.close()#发送邮件部分
#设置发送邮件的服务器和端口
email_sever = 'smtp.163.com'    #使用163邮箱
email_port = '25'      #对应的端口号#设置发件人和收件人
email_sender = 'xxxxxxx@163.com'
email_pass = 'xxxxxxxx'      #此处是授权密码
email_receiver = 'xxxxxxx@qq.com'#设置发送内容以及主题
email = MIMEMultipart()
email['From'] = formataddr(["xxxxx",email_sender])
email['To'] = formataddr(["xxxxxxxx",email_receiver])
email['Subject'] = "xxxxxxxxx"#正文内容
message = "xxxxxxxxxxx"
textApart = MIMEText(message)
email.attach(textApart)#附件
txtFile = r'xxxxxxxxxxxx'
txtApart = MIMEApplication(open(txtFile, 'rb').read())
txtApart.add_header('Content-Disposition', 'attachment',filename=('gbk','',txtFile))
email.attach(txtApart)#发送邮件
def send_email(mail_sever,mail_port,mail_sender,mail_pass,mail_reciver):try:mail = smtplib.SMTP(mail_sever,mail_port)mail.login(mail_sender,mail_pass)mail.sendmail(mail_sender,[mail_reciver],email.as_string())mail.quit()print("邮件发送成功!!!")except:mail.quit()print("邮件发送失败!!!")if __name__ == '__main__':url='https://tianqi.moji.com/weather/china/hubei/jiangxia-district'html=get_html(url)html_Select(html)send_email(email_sever,email_port,email_sender,email_pass,email_receiver)

python爬取墨迹天气的8月份的温度情况并发送到邮箱相关推荐

  1. python爬取墨迹天气

    from urllib.request import urlopen from bs4 import BeautifulSoup from xpinyin import Pinyin prov = i ...

  2. python爬取历史天气_Python 爬取历史天气数据

    Python 爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据 ...

  3. python3爬取墨迹天气并发送给微信好友,附源码

    需求: 1. 爬取墨迹天气的信息,包括温湿度.风速.紫外线.限号情况,生活tips等信息 2. 输入需要查询的城市,自动爬取相应信息 3. 链接微信,发送给指定好友 思路比较清晰,主要分两块,一是爬虫 ...

  4. python爬取苏州天气并用excel来保存

    用python爬取苏州天气 python爬取苏州天气 一.爬虫是什么? 爬虫我理解就是有针对性的爬取网络上的资源!比如说浏览器本身就是一种爬虫工具,当你访问某种网页时,你的浏览器就像一个蜘蛛,爬取网页 ...

  5. node爬取墨迹天气数据发送定时邮件

      使用vscode通过node.js爬取墨迹天气网站的数据,然后通过邮件每天定时给特定的一个或者多个邮箱发送具有特定html样式的163邮件. 实现爬取功能准备工作: 官网下载node.js 打开v ...

  6. python 爬取墨迹天气预报(超简单!该代码用于实际生产)

    爬取墨迹天气信息用于实际生产(为了展示稍有修改) # -*- coding: UTF-8 -*- # @Time :2021/2/8 9:41 # @Author :Liuzheng # @Email ...

  7. python爬取中国天气网天气图标

    python爬取中国天气网天气图标 准备工作 天气预报图例网址:http://www.weather.com.cn/static/html/legend.shtml 安装requests:pip in ...

  8. Python爬取2345天气网

    一.基于Python面向对象实现 目录 一.基于Python面向对象实现 二.以下是全部完整代码 前言 天气预报大家都会关注,但是怎么获取天气预报的数据就是难点了,不可能一点一点的复制把,接下来就将告 ...

  9. python爬取历史天气查询_Python爬取南京历史天气数据(2345天气网)

    最近学习了如何在2345天气网上爬取历史天气数据,并使用pandas库对数据进行清洗和导出.不过,本文方法对其它网站并不一定适用,主要是记录一种思考的方式. 南京的历史天气数据在这个网站上:http: ...

最新文章

  1. ActivityGroup是如何对嵌入的Activitys进行管理的
  2. 用rand_7()实现rand_10()
  3. Verilog的数据流、行为、结构化与RTL级描述
  4. TensorFlow(二)函数基础
  5. Nginx日志配置及分割
  6. Qt Data Visualization 3D可视化
  7. 数学女孩-伽罗瓦理论读书笔记尺规作图
  8. 迅雷修改tracker服务器,qBittorrent 添加自定义 Tracker 的方法
  9. Windows 11彻底禁用IE浏览器后,银行网银系统完全解决方案!
  10. JAVA结合AE(Adobe After Effects),通过解析AE源文件AEPX,替换素材,渲染合成,转码等操作
  11. Python while语句2021-08-27
  12. python信用卡识别_在python中验证信用卡号码
  13. C++:using : using的四大用法总结
  14. 天翼随身wifi,鸡肋or神器?
  15. 简单易懂的Json的使用教程(jackson/fastjson)
  16. python获得股票数据并画图
  17. Web应用程序防火墙Waf跟云防火墙有什么区别
  18. UNIX操作系统中加锁和解锁
  19. k-means+matlab 之辣鸡学算法
  20. 巴黎圣母院重建设计竞赛辟谣!“巴黎心跳”夺冠,仅仅只是自嗨?

热门文章

  1. 第十一次作业 - Alpha 事后诸葛亮(团队)
  2. verilog/vhdl调试工具-Debussy使用教程
  3. 拆解老式电饭锅限温器并验证其原理
  4. 网页在PC 上运行正常,在IPad上运行出错的故障原因分析及应对措施
  5. 深入探究宽字节注入漏洞与修补原理
  6. 学习Python, 没有工作经验没学历能找到工作吗?
  7. 桌面cpu与服务器cpu天梯,台式CPU性能怎么看?桌面CPU天梯图2018年1月更新版
  8. flink实战--核心概念解析和应用
  9. 在未来时空中沉浸探索,体验引领时代的建筑节能展馆
  10. C++STL之初识容器和迭代器