ZhXT 发表于 2021-1-30 22:28

【腾讯云函数】新闻联播每日推送至手机

本帖最后由 ZhXT 于 2021-1-31 18:45 编辑

### 0x01
基于吾爱老哥的代码进行优化,原帖(https://www.52pojie.cn/forum.php?mod=viewthread&tid=1316933&highlight=%D0%C2%CE%C5)
### 0x02
原代码的逻辑是生成今天的日期,然后使用正则匹配出正文。

然鹅原代码在Windows下面使用“**#**”控制生成如“**2021年1月30日**”这种格式,刚好可以匹配到正文,在Windows下运行毫无破绽。

但是部署到云函数“**#**”失效,生成日期格式为“**2021年01月30日**”(多了一个0)无法获取正文,因为这个薅了一天头发,淦。

有兴趣的老哥可以看下原帖14行代码和我的12行代码对比

### 0x03 使用
替换server酱地址,部署至云函数即可,未使用第三方库。

### 0x04 代码

~~~python
# -*- coding: utf8 -*-
import requests
import re
import datetime

class News(object):
    def __init__(self):
      #Server酱地址
      self.ServerJ = 'http://sc.ftqq.com/XXXXX.send'
      #新闻联播文字版主页
      self.TotalPage = 'http://www.xwlbo.com/txt.html'
      self.DateTime = (datetime.date.today() + datetime.timedelta(-1)).strftime("%-Y-%-m-%-d").replace('-', '{}').format('年','月') + "日新闻联播文字完整版内容"
      self.Text = requests.get(url=self.TotalPage).text
      self.res = []
      self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
      }

    def FromTotal(self):
      # 取得id
      id = ''.join(re.findall(r'id="v(.*?)">%s' % (self.DateTime), self.Text))
      IdUrl = 'http://www.xwlbo.com/%s.html' % (id)
      Response = requests.get(url=IdUrl).text
      # 获取对应id内容
      NewsTitle = re.findall(r'.html">(.*?)</a></strong></p><p>', Response)
      NewsText = re.findall(r'</strong></p><p>(.*?)</p><p><strong>', Response)
      # 提出所需要内容
      try:
            for i in range(0, len(NewsTitle) - 1):
                self.res.append('[+] 标题:' + NewsTitle + '\n\n')
                self.res.append(NewsText.replace('</p><p>', '') + '\n')
                self.res.append('\n')
      except:
            pass

      s = ''.join(self.res)
      # 转换好要发送的内容
      data = {
            'text': '新闻联播文字版',
            'desp': s, }
      #print(str(data))
      requests.post(url=self.ServerJ, data=data)

    def main(self):
      self.FromTotal()

# 云函数入口
def main_handler(event, context):
    run = News()
    run.main()

if __name__ == '__main__':
    run = News()
    run.main()


~~~
### 0x04 图片示例
![]()
![]()

Hangjau 发表于 2021-10-24 17:17

xcvg 发表于 2021-2-1 19:44
大佬怎么能替换成企业微信的机器人应用推送,想要试试机器人推送,但是我不会

你还是得部署一个机器人 将获取的东西发送到机器人就行了

Hangjau 发表于 2021-2-2 14:19

xcvg 发表于 2021-2-1 19:44
大佬怎么能替换成企业微信的机器人应用推送,想要试试机器人推送,但是我不会

也用云函数,把抓取的文章发送到机器人的URL就可以了

撒酒狂歌 发表于 2021-1-30 22:43

感谢分享

逐雅斋 发表于 2021-1-30 22:46

这个不错!感谢分享!

西楠 发表于 2021-1-30 23:38

支持一下

小小吴 发表于 2021-1-31 20:25

我有感谢楼主

dych1688 发表于 2021-1-31 22:50

刚才测试了获取当天的内容没有问题,获取上一天的正则不对,timedelta(-1))中的-1改成0

chenshuojian 发表于 2021-2-1 09:33

请求获取不到内容

xcvg 发表于 2021-2-1 19:44

大佬怎么能替换成企业微信的机器人应用推送,想要试试机器人推送,但是我不会{:1_904:}

ZhXT 发表于 2021-2-1 21:10

chenshuojian 发表于 2021-2-1 09:33
请求获取不到内容

在Windows下获取不到,在Linux下运行或者腾讯云函数下运行都是ok的。

ZhXT 发表于 2021-2-1 21:11

xcvg 发表于 2021-2-1 19:44
大佬怎么能替换成企业微信的机器人应用推送,想要试试机器人推送,但是我不会

这个没了解过:rggrg
页: [1] 2 3
查看完整版本: 【腾讯云函数】新闻联播每日推送至手机