爬取喜加一游戏,Github+PUSHPLUS,每日推送到微信

查看 196|回复 10
作者:平Fan_d世界   
[color=]2023-9-15更新:
[color=]1、更新修改Server酱->PUSHPLUS,
[color=]感谢
[color=]@hxy310。
[color=]2、修正无游戏+1时的错误。
3、修改一些错误代码。
1、爬取喜加一,地址:https://steamstats.cn/xi使用了BeautifulSoup库,使用pip安装,代码>> pip install beautifulsoup4
[Python] 纯文本查看 复制代码import requests
from bs4 import BeautifulSoup
##Server酱更改为PUSHPLUS,此段代码注释了###Server酱推送模块,PUSH_KEY替换自己的
#def send_message_fangtang(_item,_message):
#        PUSH_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'  #
#        api = 'https://sctapi.ftqq.com/' + PUSH_KEY + '.send'
#        _d = {
#                "title": _item,
#                "desp": _message
#                }
#       req = requests.post(api,data = _d)
#       #print(req.text)
#PushPlus推送模块
def pushplus(_item, _message):
    token = sys.argv[1]    #隐藏token码,参考楼下代码
    api = 'http://www.pushplus.plus/send'
    _d = {
        "token": token,
        "title": _item,
        "content": _message
    }
    req = requests.post(api, data=_d)
    #print(req.text)
#爬取代码
url='https://steamstats.cn/xi'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.41'}
r=requests.get(url,headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text, "html.parser")
tbody=soup.find('tbody')
desp="🎉当前可领限时免费游戏🎉"+'\n'
#print(tbody)
if tbody is not None:
    tr=tbody.find_all('tr')
    i=1
    for tr in tr:
        td=tr.find_all('td')
        name=td[1].string.strip().replace('\n', '').replace('\r', '')
        gametype=td[2].string.replace(" ","").replace('\n', '').replace('\r', '')
        start=td[3].string.replace(" ","").replace('\n', '').replace('\r', '')
        end=td[4].string.replace(" ","").replace('\n', '').replace('\r', '')
        time=td[5].string.replace(" ","").replace('\n', '').replace('\r', '')
        oringin=td[6].find('span').string.replace(" ","").replace('\n', '').replace('\r', '')
        sp=str(td[6]).split('"')
        http=sp[3]
        
        desp=desp+"序号:"+str(i)+'\n'+"游戏名称:"+name+'\n'+"类型:"+gametype+'\n'+"开始时间:"+start+'\n'+"结束时间:"+end+'\n'+"是否永久:"+time+'\n'+"平台:"+oringin+'\n'+"链接:"+http+'\n'
        i=i+1
    else:
        desp=desp+"无"
#send_message_fangtang("今日喜加一",desp)
pushplus("✨今日喜加一✨",desp)
#print(desp)      
2、Github Ations,new workflows新建main.yml
[Shell] 纯文本查看 复制代码name: happy plus one
on:
  push:
    branches:
      - main
  schedule:   
    - cron:  23 23 * * *   #国际标准时间,北京时间+8
jobs:
  my_job:
    runs-on: ubuntu-latest
    steps:
      - name: 'checkout codes'
        uses: actions/checkout@v2
      - name: 'set up python'
        uses: actions/setup-python@v2
        with:
         python-version: ${{ matrix.python-version }}
      - name: requirements
        run: |
         python -m pip install --upgrade pip
         pip install beautifulsoup4
      - name: 'Epic/steam happy +1'
         run: |
          python ${{ github.workspace }}/happy_plus_one.py ${{ secrets.PUSHPLUS_TOKEN }}  #你的PUSHPLUS TOKEN
3、储存库-Settings-Secrets and variables-Actions-New repository secret Name填入你的TOKEN
复制第一步的happy_plus_one.py文件到Github,大功告成!执行没问题的!

效果差不多是这样,还有个链接地址是后改的,今天的推送次数到了,没有在图片上。

PUSHPLUS后的效果是这样的!


代码, 是这样

hxy310   

根据楼主的代码,我改良了一下,将token放入了
[color=]Actions secrets and variables
,这样不会暴露token,防止有人利用token推送垃圾信息,并且我将
Server酱换成了pushplus,大家可以选择性使用。
需要打开你的
[color=]储存库-Settings-Secrets and variables-Actions-New repository secret
Name填TOKEN,底下的值就将你的推送秘钥粘贴进去就行了。

[Shell] 纯文本查看 复制代码name: Happy_Plus_One
on:
  workflow_dispatch:
  
  schedule:  
     - cron:  0 1 * * *   #国际标准时间,北京时间+8
jobs:
  my_job:
    runs-on: ubuntu-latest
    steps:
      - name: 'checkout codes'  #检测代码
        uses: actions/checkout@v2
      - name: 'set up python'  #配置python
        uses: actions/setup-python@v2
        with:
         python-version: ${{ matrix.python-version }}
      - name: requirements  #配置库
        run: |
         python -m pip install --upgrade pip
         pip install beautifulsoup4
      - name: 'Epic/steam happy +1'  #运行py
        run: |
          python happy_plus_one.py ${{ secrets.TOKEN }}
[Asm] 纯文本查看 复制代码import sys
import requests
from bs4 import BeautifulSoup
# PushPlus推送模块
def pushplus(_item, _message):
    token = sys.argv[1]
    api = 'http://www.pushplus.plus/send'
    _d = {
        "token": token,
        "title": _item,
        "content": _message
    }
    req = requests.post(api, data=_d)
    print(req.text)
# 爬取代码
url = 'https://steamstats.cn/xi'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.41'}
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text, "html.parser")
tbody = soup.find('tbody')
tr = tbody.find_all('tr')
i = 1
for tr in tr:
    td = tr.find_all('td')
    name = td[1].string.strip().replace('\n', '').replace('\r', '')
    gametype = td[2].string.replace(" ", "").replace('\n', '').replace('\r', '')
    start = td[3].string.replace(" ", "").replace('\n', '').replace('\r', '')
    end = td[4].string.replace(" ", "").replace('\n', '').replace('\r', '')
    time = td[5].string.replace(" ", "").replace('\n', '').replace('\r', '')
    origin = td[6].find('span').string.replace(" ", "").replace('\n', '').replace('\r', '')
    sp = str(td[6]).split('"')
    http = sp[3]
    desp = "序号:" + str(i) + '\n\r' + "游戏名称:" + name + '\n\r' + "类型:" + gametype + '\n\r' + "开始时间:" + start + '\n\r' + "结束时间:" + end + '\n\r' + "是否永久:" + time + '\n\r' + "平台:" + origin + '\n\r' + "链接:" + http + '\n\r'
    # 推送
    pushplus("今日喜加一", desp)
    print(desp)
如果想使用Server酱,将我第二段的代码第1到第15行替换即可。
[Python] 纯文本查看 复制代码import sys
import requests
from bs4 import BeautifulSoup
#Server酱推送模块,PUSH_KEY替换自己的
def send_message_fangtang(_item,_message):
        token = sys.argv[1]
        api = 'https://sctapi.ftqq.com/' + token + '.send'
        _d = {
                "title": _item,
                "desp": _message
                }
        req = requests.post(api,data = _d)
        #print(req.text)
shuai2051   

适配青龙面板,需要在脚本同目录存在notify.py文件,且在配置文件设置过相应推送变量,效果如下图


Sni_2023-09-07_09-59-24.jpg (37.62 KB, 下载次数: 0)
下载附件
效果图
2023-9-7 09:59 上传

[Python] 纯文本查看 复制代码# -*- coding: utf-8 -*-
"""
cron: 48 7 * * *
new Env('epic 今日喜加一');
"""
import time
import re
import requests
import logging
import random
import os
import sys
from os import environ, system, path
from bs4 import BeautifulSoup
# 加载通知
def load_send() -> None:
    logging.info("加载推送功能中...")
    global send
    send = None
    cur_path = os.path.abspath(os.path.dirname(__file__))
    sys.path.append(cur_path)
    if os.path.exists(cur_path + "/notify.py"):
        try:
            from notify import send
        except Exception:
            send = None
            logging.info(f"❌加载通知服务失败!!!\n{traceback.format_exc()}")
    else:
        logging.info(f"❌加载通知服务失败!!!\n")
# 爬取代码
def main():
    url = 'https://steamstats.cn/xi'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.41'}
    r = requests.get(url, headers=headers)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text, "html.parser")
    tbody = soup.find('tbody')
    tr = tbody.find_all('tr')
    i = 1
    # desp="今日喜加一"+'\n'
    for tr in tr:
        td = tr.find_all('td')
        name = td[1].string.strip().replace('\n', '').replace('\r', '')
        gametype = td[2].string.replace(
            " ", "").replace('\n', '').replace('\r', '')
        start = td[3].string.replace(" ", "").replace('\n', '').replace('\r', '')
        end = td[4].string.replace(" ", "").replace('\n', '').replace('\r', '')
        time = td[5].string.replace(" ", "").replace('\n', '').replace('\r', '')
        oringin = td[6].find('span').string.replace(
            " ", "").replace('\n', '').replace('\r', '')
        sp = str(td[6]).split('"')
        http = sp[3]
        res = "序号:"+str(i)+'\n\r'+"游戏名称:"+name+'\n\r'+"类型:"+gametype+'\n\r'+"开始时间:"+start + \
            '\n\r'+"结束时间:"+end+'\n\r'+"是否永久:"+time+'\n\r' + \
            "平台:"+oringin+'\n\r'+"链接:"+http+'\n\r'
    # print(res)
    result = f"{res}"
    send('今日喜加一', result)
if __name__ == "__main__":
     # 加载通知
    load_send()
    time.sleep(random.randint(5, 10))
    main()
LeslieLau   

有个APP小黑盒,上面有领取功能
罩到胸前必有沟   

很厉害!
fscc无误   

这是什么????
GodRui2023   

萌新看得一脸懵 待我多看几遍
moruye   

刚好学习学习
AaronZero   

可以,这个牛
雾都孤尔   

学习下,感谢分享。
您需要登录后才可以回帖 登录 | 立即注册