#教育机构 :马士兵教育 #讲 师:杨淑娟 #开发时间:2020/3/26 15:56 #爬虫程序 (1)发请求 requests模块发请求 (浏览器使用地址栏发请求) #明确请求方式,才知道需要调用requests中的哪个方法 get请求-->get方法, post请求-->post方法 #requests模块为第三方库提供,需要安装, 安装方式 pip install requests #导入 import requests #向爬取网站服务器发送请求 from bs4 import BeautifulSoup #解析 import email #用于构件邮件的包 from email.mime.text import MIMEText #说明发送的邮件内容为纯文本 from email.header import Header #用于构建邮件的主题 import smtplib #用于发送电子邮件 def get_weather(): # (1)发送请求 url = 'http://www.weather.com.cn/weather/101010100.shtml' # 平时写在浏览器地址栏中的内容 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'} resp = requests.get(url, headers=headers) # 向服务器发送请求-->得到响应结果 # print(resp.status_code) #输出响应状态码,如果为200说明访问成功 # print(resp.request.headers) resp.encoding = 'utf-8' # 设置响应编码格式 # print(resp.text) #查看响应回来的数据 # (2)解析数据 使用到BeautifulSoup 第三方提供,需要安装 pip install BeautifulSoup4 (将str类型转成BeautifulSoup类型) # print(type(resp.text)) #查看响应数据的类型<class 'str'> bs = BeautifulSoup(resp.text, 'html.parser') # 'html.parser' --》html解析器 # print(type(bs)) #<class 'bs4.BeautifulSoup'>因为只有知道了数据类型,才知道使用哪些方法 date_tag = bs.find('h1') # 从响应结果中查找h1的html标签 # print(date_tag.text) 当前的日期 wea_tag = bs.find(class_='wea') # print(wea_tag.text) tem_tag = bs.find(class_='tem') # 当天的度数 # print(tem_tag.text) return date_tag.text,tem_tag.text,wea_tag.text #编写一个函数用于构建邮件的内容 def create_weather(): #调用获取从网上爬取的天气信息 date,tem,wea=get_weather() #将元组中的内容赋值给三个变量 #构建要发送邮件的内容 邮件的正文'亲爱的,'+date+tem+wea, 类型'plain'纯文本 ,字符编码为utf-8 msg=MIMEText('亲爱的,'+date+tem+wea,'plain','utf-8') #构建邮件头 (主题) msg['Subject']=Header('今日天气预报','utf-8') return msg #发送电子邮件 def send_message(): from_addr=input('请输入发件人邮箱名:') pwd=input('请输入密码:') #授权码而非邮箱密码 to_addr=input('请输入接收人邮箱') #连接邮箱服务提供商的服务器 stmp=smtplib.SMTP() #SMTP简单邮件 stmp.connect('smtp.qq.com',25) #登录邮箱 stmp.login(from_addr,pwd) #调用邮件的内容的函数 content=create_weather() #发送邮件 stmp.sendmail(from_addr,to_addr,content.as_string()) #关闭连接 stmp.quit() print('邮件发送成功') if __name__ == '__main__': #print(get_weather()) send_message()
使用python获取天气
35 min read