爷,您关注的帖子更新啦!(支持server酱)

正己 19天前 16

0x0 前言
最近发现了云函数这个新大陆,太好玩了。之前就有这么一个想法,而且之前看过论坛的一个大佬发过一篇类似的帖子,但是我死活找不到,希望有看到过的大佬发个链接,如果原作大大看到能得滴我一下,我好学习学习。
下面是效果图:


0x1准备
1.python脚本代码(文末我会给出)
2.server酱的key(这个可以用gayhub一键注册)飞机票
3.腾讯云函数(白嫖老马的大好机会)飞机票


0x2过程
本人属于又菜又爱学的那种,论坛的人都是人才,说话又好听,帖子又好玩,超喜欢在这里。但是又不能时时盯着论坛,于是接着最近研究的云函数,写了python脚本提醒自己帖子更新啦(萌新初尝试,踩了很多坑,代码也写得很垃圾,各位大佬见谅!)
1.首先
这里以俺最喜欢的python为例,在编程语言区选择python,然后在更多里点击发帖时间,复制url,其他板块的操作也是一样,这个代码通用的。

2.接着
打开腾讯的云函数,登录好之后,点击新建,
函数名和模版根据我说的来就可以了,然后下一步,
填写描述和把我的代码复制进去(代码里需要修改的我都会标注),并且修改执行方法,
接着点击下面的高级选项,把超时时间设置为900秒,点击完成。

3.最后
打开左边的触发管理,新建一个触发器,促发周期选择自定义,  填入0 */15 * * * * *(每15分钟触发一次),最后保存测试一下代码。(今天感觉测试下来有点浪费资源,我又改写了规则0 */15 8-23 * * * *(每天早上八点到晚上11点,每个15分钟触发一次)


0x3尾声
先说说我踩的坑,最开始是用xpath写好了解析代码,然后发现云函数不支持xpath,我不得不改用正则。再说说判定的机制,我一开始是在pycharm里写了个文本来读取信息进行对比,蛋疼的是云函数没有写入的权限。最后实在没办法我就写了一个延迟函数,结果云函数超过三秒报错(一开始不知道高级设置里还可以设置超时时间)。总结下来,还是有点浪费资源的,而且有很小的概率会没提醒到。

附上代码:

import requestsimport reimport timeheaders = {    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36"} #构造请求头skey = ''  # 这里填入你的server酱keyurl = 'https://www.52pojie.cn/forum.php?mod=forumdisplay&fid=24&filter=author&orderby=dateline&tyPEID=29'  #这是编程区python的帖子,可自行修改def push():    server_url = "https://sc.ftqq.com/%s.send" % skey    res = getHTMLText(url)    des = re.findall('class="s xst">(.*?)</a>', res)[1]    params = {        "text": '爷,您关注的帖子更新啦!', #server酱提示的标题可自行修改        "desp": des    ##server酱提示的内容可自行修改    }    response = requests.get(server_url, params=params)    json_data = response.json()    if json_data['errno'] == 0:        print(" 推送成功。")    else:        print("推送失败")def getHTMLText(url):  #网络异常捕获    try:        r = requests.get(url, headers=headers)        r.raise_for_status()  # 如果状态不是200,引发HTTPError异常        r.encoding = r.apparent_encoding        return r.text    except:        return "网站访问异常"def main(*args):    res = getHTMLText(url)    id = re.findall('tbody id="(.*?)"', res)[1] #正则匹配id    time.sleep(890)  #等待时间,可自行修改    id2 = re.findall('tbody id="(.*?)"', res)[1] #正则匹配id    if id == id2:        print("暂无帖子更新") #日志打印    else:        push()  #触发server酱推送        print('爷,您关注的帖子更新啦!')  #日志打印    # with open('info.text', mode='r') as f:  # 写入数据r    #     test = f.read()    #     if id == test:    #         print("暂无帖子更新")    #     else:    #         with open('info.text', mode='a') as f:    #             f.write(id)    #             # push()    #             print('爷,您关注的帖子更新啦!')if __name__ == "__main__":    main()    getHTMLText(url)
最新回复 (24)
  • 涛之雨 19天前
    引用 2
    看到“爷”就进来了
  • jason903 18天前
    引用 3
    正己 发表于 2020-9-11 20:48
    我创建好了,不过第一次使用action,yml写得有问题一直报错,大佬能否帮我看一下
    https://github.com/ZJ ...

    修正:
    修正1:

    run: python3 qiandao.py|   
    修改为  
    run: python qiandao.py修正2:
    在run步骤前增加步骤:
    - name: Install Dependencies
      run: |
        pip install -r request.text修正3:
    修改request.text内容

    request
    修改为
    requests修正4:

    skey = ''  # 你的server酱skey
    修改为:
    skey = os.environ['SCKEY']github repo代码仓库 Settings - Secrets 学习下
  • 楼主 正己 19天前
    引用 4
    康康等会会不会给我推送,毕竟没人更新帖子,只能我用自己的帖子测试了
  • canker 19天前
    引用 5
    感谢大佬
  • yiwai2012 19天前
    引用 6
    很好 学习了 感谢大佬
  • jason903 19天前
    引用 7
    "云函数没有写入的权限", 可以用github的actions,相当有一台可以定时运行的服务器,但没有登录、访问并获取其上文件的权限,但可以运行时定入文件,并读取文件内容通过server酱发送内容
  • 列明 19天前
    引用 8
    已收藏,以后可能会用到。
  • 楼主 正己 19天前
    引用 9
    涛之雨 发表于 2020-9-11 12:43
    看到“爷”就进来了

    涛爷,做好了
  • 楼主 正己 19天前
    引用 10
    jason903 发表于 2020-9-11 12:27
    "云函数没有写入的权限", 可以用github的actions,相当有一台可以定时运行的服务器,但没有登录、访问并获 ...

    也就是说github也是没有写入权限的吧,如果有,那这个函数运行就方便了
  • Xw丶小威 19天前
    引用 11
    以后的代码编写和调用将会越来越方便。真好。
  • 支持一波啊
  • 阿飞丶 19天前
    引用 13
    github 配合 server酱 也是可以的
  • 楼主 正己 19天前
    引用 14
    阿飞丶 发表于 2020-9-11 14:27
    github 配合 server酱 也是可以的

    是的都可以
  • 楼主 正己 18天前
    引用 15
    jason903 发表于 2020-9-11 12:27
    "云函数没有写入的权限", 可以用github的actions,相当有一台可以定时运行的服务器,但没有登录、访问并获 ...

    我创建好了,不过第一次使用action,yml写得有问题一直报错,大佬能否帮我看一下
    https://github.com/ZJ595/wuai
  • 楼主 正己 18天前
    引用 16
    阿飞丶 发表于 2020-9-11 14:27
    github 配合 server酱 也是可以的

    我创建好了,不过第一次使用action,yml写得有问题一直报错,大佬能否帮我看一下
    https://github.com/ZJ595/wuai
  • jason903 18天前
    引用 17
    正己 发表于 2020-9-11 20:49
    我创建好了,不过第一次使用action,yml写得有问题一直报错,大佬能否帮我看一下
    https://github.com/ZJ ...

    1,你可以点击Github的repo[代码仓库] 下的 Actions 页面
    2. 你的“通知”的某次运行,是可以查看运行日志的,点击链接 可以查看 运行日志摘录如下,你先自己修正下
    /home/runner/work/_temp/878033de-aa96-46ff-a155-af93e1942dec.sh: line 2: syntax error: unexpected end of file
    ##[error]Process completed with exit code 2
  • 楼主 正己 18天前
    引用 18
    jason903 发表于 2020-9-11 21:00
    1,你可以点击Github的repo[代码仓库] 下的 Actions 页面
    2. 你的“通知”的某次运行,是可以查看运行日 ...

    是的,这段我也看了,没明白什么意思,是不是这个action也有固定的运行时间,感谢大佬帮忙
  • jason903 18天前
    引用 19
    正己 发表于 2020-9-11 20:48
    我创建好了,不过第一次使用action,yml写得有问题一直报错,大佬能否帮我看一下
    https://github.com/ZJ ...

    修正:
    修正1:

    run: python3 qiandao.py|   
    修改为  
    run: python qiandao.py修正2:
    在run步骤前增加步骤:
    - name: Install Dependencies
      run: |
        pip install -r request.text修正3:
    修改request.text内容

    request
    修改为
    requests修正4:

    skey = ''  # 你的server酱skey
    修改为:
    skey = os.environ['SCKEY']github repo代码仓库 Settings - Secrets 学习下
  • 楼主 正己 18天前
    引用 20
    jason903 发表于 2020-9-11 21:31
    修正:
    修正1:

    可以运行了,谢谢大佬
  • 深水夜藏 18天前
    引用 21
    写的非常好,我也要学习进步
  • 枫子树 18天前
    引用 22
    学习一下
  • 深水夜藏 17天前
    引用 23
    感谢分享这么好的文章,学习加收藏
  • mj898 17天前
    引用 24
    支持楼主,时刻关注你的新帖
  • Longman 16天前
    引用 25
    给力!学习了,感谢分享!
  • 游客
    26
返回