首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Pyhton爬虫爬取天气情况以及情话

Pyhton爬虫爬取天气情况以及情话

作者头像
cuijianzhe
发布于 2022-06-14 10:14:49
发布于 2022-06-14 10:14:49
40100
代码可运行
举报
文章被收录于专栏:cuijianzhecuijianzhe
运行总次数:0
代码可运行

获取北京城区天气信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time  : 2020/5/1 16:11
# @Author : cuijianzhe
# @File  : weather.py
# @Software: PyCharm
from datetime import datetime
import urllib.request
from lxml import etree
def getWeather():
    url = "http://www.weather.com.cn/weather/101010100.shtml"
    response = urllib.request.urlopen(url)
    html = response.read().decode()
    parseHtml = etree.HTML(html)
    temperatureLow = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[2]/i/text()'))  # 获取今天最低温度
    temperatureHigh = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[2]/span/text()'))  # 获取今天最低温度
    weather = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[1]/text()'))  # 获取今天天气
    wind = '-'.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span//@title'))  # 获取今天风向
    winL = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[3]/i/text()'))  # 获取今天风级
    today = datetime.now()
    today = str(today.year) + '年' + str(today.month) + '月' + str(today.day) + '日'
    content = 'Good moring! My Honey~\n' + \
              '今天是:  ' + today + '\n' + \
              '北京温度:  ' + temperatureLow + '-' + temperatureHigh + '℃\n' + \
              '天气:  ' + weather + '\n' + \
              '风况:  ' + wind + ' ' + winL
    return content

爬取表白话语

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time  : 2020/5/1 16:11
# @Author : cuijianzhe
# @File  : biaobai.py
# @Software: PyCharm
import requests
from bs4 import BeautifulSoup
import random
def getloverwords():
    texts = []
    num = int(random.randint(3, 114))
    for i in range(1, num):
        url = 'https://www.duanwenxue.com/huayu/biaobai/list_{}.html'.format(i)
        response = requests.get(url)
        texts.append(response.text)
    articles = []
    for text in texts:
        soup = BeautifulSoup(text, 'lxml')
        arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"})  # 寻找情话内容
        #  通过列表推导式以及for循环获取到每个a标签里面的text内容并通过strip去除空格
        articles.extend([arttis[i].text.strip() for i in range(len(arttis))])
    todaywords = articles[random.randint(0, len(articles) - 1)]  # 随机选取其中一条情话
    return todaywords

每日给女朋友发送邮件并且发送飞书消息

  • 爬取每日天气情况
  • 每日甜言蜜语
  • 每日邮件
  • 记录我们在一起的天数
  • 倒计时
  • 集成飞书应用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# !/bin/env python3
########################################################
#  This script is to send emails to Lijuan regularly   #
#  Date: 2020-5-1                                      #
#  Author: cuijianzhe                                  #
#  Email: 598941324@qq.com                             #
########################################################
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
import datetime
import urllib.request
from lxml import etree
from bs4 import BeautifulSoup
import requests
import random
import json
class _send():
    def __init__(self):
        self.Days = _send.brithday()
    def getWeather(self):
        from datetime import datetime
        url = "http://www.weather.com.cn/weather/101010100.shtml"
        response = urllib.request.urlopen(url)
        html = response.read().decode()
        parseHtml = etree.HTML(html)
        temperatureLow = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[2]/i/text()'))  #获取今天最低温度
        temperatureHigh = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[2]/span/text()'))  # 获取今天最低温度
        weather = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[1]/text()')) #获取今天天气
        wind = '-'.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[3]/em/span//@title'))  #获取今天风向
        winL = ''.join(parseHtml.xpath('//*[@id="7d"]/ul/li[1]/p[3]/i/text()'))  #获取今天风级
        today = datetime.now()
        today = str(today.year) + '年' + str(today.month) + '月' + str(today.day) + '日'
        content = 'Good morning! My Honey~\n' + \
                  '今天是:  ' + today + '\n' + \
                  '北京温度:  ' + temperatureLow + '-' + temperatureHigh + '℃\n' + \
                  '天气:  ' + weather + '\n' + \
                  '风况:  ' + wind +' '+ winL
        return content

    def getloverwords(self):
        texts = []
        for i in range(1, int(random.randint(3,83))):
            url = 'https://www.duanwenxue.com/huayu/tianyanmiyu/list_{}.html'.format(i)
            response = requests.get(url)
            texts.append(response.text)
        articles = []
        for text in texts:
            soup = BeautifulSoup(text, 'lxml')
            arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"})  # 寻找情话内容
            #  通过列表推导式以及for循环获取到每个a标签里面的text内容并通过strip去除空格
            articles.extend([arttis[i].text.strip() for i in range(len(arttis))])
        todaywords = articles[random.randint(0, len(articles) - 1)]  # 随机选取其中一条情话
        return todaywords
    def symbol(self):
        startdate = datetime.datetime(2019, 12, 9)
        enddate = datetime.datetime.now()
        days = int((enddate - startdate).days + 1)  # 第%s天,比已经天数+1

        '''
        #另一种body结构体,可定义
        body = """
                 %s\n
                 ❤I miss you very much every day.\t%s
                 ❤今天是我和仙女在一起的第%s天,我会至死不渝的爱你……   ❤
                 ❤今日份小甜甜:%s \n
                 ❤\t\t\t\t%s \n
                 ❤ ❤ L love you ❤ ❤
            """ % (self.getWeather(),self.getloverwords(),days,self.getloverwords(),self.Days)
        '''
        body = self.getWeather()+'\n'+\
            '\n' +\
            '❤I miss you very much every day.'+self.getloverwords() +'\n'+\
            '❤今天是我和仙女在一起的第%s天,我会至死不渝的爱你……   ❤'%days +'\n'+\
            '❤今日份小甜甜:'+ self.getloverwords()+'\n'+\
            '❤ ❤ L love you ❤ ❤'+'\n' +\
            '❤%s❤'%self.Days
        return body

    def _email(self):
        try:
            my_sender = '598941324@qq.com'
            my_pass = 'mypassword'
            my_user = ["jianzhecui@163.com",]
            msg = MIMEText(self.symbol(), 'plain', 'utf-8')
            msg['From'] = formataddr(["爱你的哲哥", my_sender])
            msg['To'] = ','.join(my_user)
            msg['Subject'] = '滴!打卡,爱你的一天'
            server = smtplib.SMTP_SSL("smtp.qq.com", 465)
            server.login(my_sender, my_pass)
            server.sendmail(my_sender, msg['To'].split(','), msg.as_string())
            server.quit()
        except Exception as err:
            # logger.debug(err)
            print('发送失败!', 'error: {}'.format(err))

    @staticmethod
    def brithday():
        from datetime import datetime
        future = datetime.strptime('2020-12-17 00:00:00', '%Y-%m-%d %H:%M:%S')
        now = datetime.now()
        delta = (future - now).days
        return delta

class feishu():
    def __init__(self,mobile,word):
        self.mobile = mobile
        self.token = feishu.get_token()
        self.word = word
    def getuserid(self):
        headers_group = {
            "Authorization": "Bearer %s" % self.token,
            "Content-Type": "application/json"
        }
        try:
            userurl = "https://open.feishu.cn/open-apis/user/v1/batch_get_id?mobiles=%s" %self.mobile
            res_data = requests.get(url=userurl, headers=headers_group)
            code = json.loads(res_data.text).get('code')
            if code == 0:
                userid = json.loads(res_data.text)['data']['mobile_users'][self.mobile][0]['user_id']
                return userid
            else:
                error = json.loads(res_data.text).get('msg')
                print('请求出错:{}'.format(error))
        except:
            print('号码参数')

    def sendmess(self):
        headers_group = {
            "Authorization": "Bearer %s" % self.token,
            "Content-Type": "application/json"
        }
        message_url = "https://open.feishu.cn/open-apis/message/v4/send/"
        # 发送富文本消息
        data = {
            "user_id": self.getuserid(),
            "msg_type": "post",
            "content": {
                "post": {
                    "zh_cn": {
                        "title": "今日份邮件发送内容如下:",
                        "content": [
                            [
                                {
                                    "tag": "text",
                                    "un_escape": True,
                                    "text": "%s " % word
                                },
                                {
                                    "tag": "at",
                                    "user_id": self.getuserid()

                                }
                            ]
                        ]
                    }
                }
            }
        }
        request = requests.post(url=message_url, headers=headers_group, json=data)
    @staticmethod  # 静态方法 类或实例均可调用
    def get_token():  # 改静态方法函数里不传入self 或 cls
        data = {"app_id":"cli_9xxxd","app_secret":"YJJ7UxxxxYUi"}
        headers = {"Content-Type": "application/json"}
        url_token = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
        try:
            res = requests.post(url_token, json=data, headers=headers)
            if res.status_code == 200:
                token = (json.loads(res.text)).get('tenant_access_token')
                return token
        except:
            print('token参数获取失败!', 'error: {}'.format(err))

if __name__ == '__main__':
    content = _send()
    content._email()   #发送邮件
    word = content.symbol()  #邮件文本结构体
    mobiles = ["186xxxx6142"]
    for mobile in mobiles:
        fs = feishu(mobile,word)
        fs.sendmess()

参考:https://blog.csdn.net/blowfire123/article/details/99173295


标题:Pyhton爬虫爬取天气情况以及情话

作者:cuijianzhe

地址:https://cloud.tencent.com/developer/article/2022824

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux下Nginx配置SSL以及301重定向
Nginx配置文件,位置/etc/nginx/sites-enabled下的default文件
no怕不了木
2023/10/26
1.3K0
Nginx配置SSL实现https请求并重定向http请求的实现
因为我的网站是部署在腾讯云上的,腾讯云同时也提供了免费的SSL证书(有效期1年)。
Bug生活2048
2018/08/31
4.4K0
Nginx配置SSL实现https请求并重定向http请求的实现
手把手教你 3 分钟搞定个人网站 http 免费升级到 https
阿里云有免费的 ssl 证书,一年时间没操作 ssl 证书了,阿里云竟然把免费证书入口给隐藏了,害我提交了一次工单。
业余草
2020/08/25
2.1K0
手把手教你 3 分钟搞定个人网站 http 免费升级到 https
Nginx配置正向代理和反向代理,实现HTTPS通信的案例
客户端直接通过HTTP访问内部服务是不安全的,如果在不改造客户端和内部服务的情况下实现HTTPS的安全信息传输?这里使用了nginx的正向代理和反向代理,如上图所示。
飞狗
2019/02/25
5.3K0
Nginx配置正向代理和反向代理,实现HTTPS通信的案例
Nginx同一个IP上多个域名配置安装SSL证书
在同一台服务器上配置多个带有SSL证书的HTTPS网站时,每个网站确实需要使用不同的端口号,以避免冲突。这是因为SSL/TLS协议通常是在特定的端口上运行的,默认情况下是443端口。
Tinywan
2024/03/20
3.5K0
Nginx同一个IP上多个域名配置安装SSL证书
Nginx系列(3) —— Nginx 的常用命令与配置文件
PS: 默认情况下,window和linux 系统之间是无法相互进行访问的。因为window在访问linux时无法越过linux 的防火墙。
求和小熊猫
2020/11/25
6980
Nginx系列(3) —— Nginx 的常用命令与配置文件
Nginx/Tengine通用配置教程
Nginx/Tengine通用配置教程,包含多域名共用一个端口指向不同程序、Nginx负载均衡配置、Https配置、禁止通过IP访问、设置访问流量并发速率、Nginx反代PHP、Nginx反代Tomcat。 Nginx通用配置: user www www; worker_processes auto; worker_cpu_affinity auto; dso { load ngx_http_concat_module.so; load ngx_http_sysguard_module.so; }
4xx.me
2022/06/09
1K0
Nginx/Tengine通用配置教程
Nginx rewrite地址重写
Rewrite在nginx中也叫URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。
用户4396583
2024/07/23
5640
NGINX服务器下配置SSL证书
  配置nginx服务器的ssl证书要去nginx目录下中conf文件夹下的nginx.conf中寻找server,找到监听443端口的server,把#打开(即关闭掉注释),修改以下配置(仅供参考)
十月梦想
2018/08/29
5.7K1
nginx搭建web服务器,配置端口复用
5、将配置文件保存在/etc/init.d/nginx位置即可。之后即可通过下面的命令进行启动服务。
Tacc
2022/01/11
2.2K0
nginx搭建web服务器,配置端口复用
Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程
上上篇文章《nginx 平滑升级&新增模块》提到了公司的 https 访问需求。当我新增了 SSL 模块之后,却发现以前还真没部署过 https 访问。 下面整理我的部署过程,并收集了一下 Apach
张戈
2018/03/23
3.6K0
Linux+Nginx/Apache/Tomcat新增SSL证书,开启https访问教程
服务器安防配置–笔记三–nginx构建https协议的wp站点
折腾成功,留下记录.目录是:https是什么,nginx配置,sql全局替换,后台开启https链接,修复图片打不开,增加http禁止.
十四君
2019/11/29
6940
服务器安防配置–笔记三–nginx构建https协议的wp站点
Nginx反向代理+负载均衡简单实现(https方式)
背景: A服务器(192.168.1.8)作为nginx代理服务器 B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服务器上反向代理到B服务器上 这就涉及到nginx反向代理https请求的配置了~~~ ------------------------------------------------------------------------------------ A服务器(192.168.1.8)上的操作流程: 1
洗尽了浮华
2018/01/22
3K0
在CentOS上安装Nginx配置HTTPS并设置系统服务和开机启动(最全教程)
GCC 是 Linux 下最主要的编译工具,GCC 不仅功能非常强大,结构也非常灵活。它可以通过不同的前端模块来支持各种语言,如 Java、Fortran、Pascal、Modula-3 和 Ada。
摘繁华
2021/12/27
2.8K0
在CentOS上安装Nginx配置HTTPS并设置系统服务和开机启动(最全教程)
Centos7安装Nginx教程,一步安装http和https
nginx是一款轻量级web服务器,主要有负载均衡和反向代理的特性。 安装准备 nginx一些模块需要依赖lib库,所以先安装lib库,执行以下命令: [root@localhost local]# yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 下载 在官网下载安装包 安装 解压文件: tar -zxvf nginx-1.20.2.tar.gz 解压之后进入到nginx目录: cd ng
用户10384376
2023/02/26
8990
Centos7安装Nginx教程,一步安装http和https
Nginx配置HTTPS详细说明
TLS或传输层安全( transport layer security),它的前身是SSL(安全套接字层secure sockets layer),是Web协议用来包裹在一个受保护,加密封装正常通道。采用这种技术,服务器和客户端之间可以安全地进行交互,而不用担心消息将被拦截和读取。证书系统帮助用户在核实它们与连接站点的身份。
星哥玩云
2022/07/14
8370
Nginx-基础总结(上)
1.proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。 2.proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。 3.proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。 4.proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。 5.proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
云计算小黑
2022/12/28
4950
Nginx的https配置记录以及http强制跳转到https的方法梳理
一、Nginx安装(略) 安装的时候需要注意加上 --with-http_ssl_module,因为http_ssl_module不属于Nginx的基本模块。 Nginx安装方法: # ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module # make && make install 二、生成证书(略) 可以使用openssl生成证书
洗尽了浮华
2018/01/23
6.1K0
网站启用SSL自动301跳转到HTTPS教程
服务器搭建之后就一直在使用宝塔,先抛出安全性能之外,宝塔真的是不错啦,我之前用过许多的控制面板(没办法,技术能力有限,只能用带控制面板的)最好发现还是宝塔比较符合大众的操作习惯,当然收费的amh我也用过,效果不如宝塔,宝塔有很多功能已经集成了,不需要额外的配置文件,比如今天说的启用SSL后,让网站的http自动跳转到https上。如果你的主机不是宝塔,那么参照以下教程试试,也许会有惊喜(记得备份,否则惊喜可能变成惊吓),先说Apache强制301跳转到https教程:
李洋博客
2021/06/15
1.6K0
【腾讯云的1001种玩法】Nginx网站服务器学习与入门
魏豪
2017/04/24
5.6K2
【腾讯云的1001种玩法】Nginx网站服务器学习与入门
推荐阅读
相关推荐
Linux下Nginx配置SSL以及301重定向
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档