爬取喜加一游戏,Github+PUSHPLUS,每日推送到微信
本帖最后由 平Fan_d世界 于 2023-9-16 15:39 编辑2023-9-15更新:
1、更新修改Server酱->PUSHPLUS,感谢@hxy310。
2、修正无游戏+1时的错误。
3、修改一些错误代码。
1、爬取喜加一,地址:https://steamstats.cn/xi使用了BeautifulSoup库,使用pip安装,代码>> pip install beautifulsoup4
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 #隐藏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.string.strip().replace('\n', '').replace('\r', '')
gametype=td.string.replace(" ","").replace('\n', '').replace('\r', '')
start=td.string.replace(" ","").replace('\n', '').replace('\r', '')
end=td.string.replace(" ","").replace('\n', '').replace('\r', '')
time=td.string.replace(" ","").replace('\n', '').replace('\r', '')
oringin=td.find('span').string.replace(" ","").replace('\n', '').replace('\r', '')
sp=str(td).split('"')
http=sp
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
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,大功告成!执行没问题的!
https://i2.100024.xyz/2023/09/04/was9ug.webp
效果差不多是这样,还有个链接地址是后改的,今天的推送次数到了,没有在图片上。
https://i2.100024.xyz/2023/09/04/w8gtss.webp
PUSHPLUS后的效果是这样的!
https://i2.100024.xyz/2023/09/15/fm33w2.webp
https://i2.100024.xyz/2023/09/15/fm332e.webp
本帖最后由 hxy310 于 2023-9-5 01:05 编辑
根据楼主的代码,我改良了一下,将token放入了Actions secrets and variables,这样不会暴露token,防止有人利用token推送垃圾信息,并且我将Server酱换成了pushplus,大家可以选择性使用。
需要打开你的储存库-Settings-Secrets and variables-Actions-New repository secret Name填TOKEN,底下的值就将你的推送秘钥粘贴进去就行了。
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 }}
import sys
import requests
from bs4 import BeautifulSoup
# PushPlus推送模块
def pushplus(_item, _message):
token = sys.argv
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.string.strip().replace('\n', '').replace('\r', '')
gametype = td.string.replace(" ", "").replace('\n', '').replace('\r', '')
start = td.string.replace(" ", "").replace('\n', '').replace('\r', '')
end = td.string.replace(" ", "").replace('\n', '').replace('\r', '')
time = td.string.replace(" ", "").replace('\n', '').replace('\r', '')
origin = td.find('span').string.replace(" ", "").replace('\n', '').replace('\r', '')
sp = str(td).split('"')
http = sp
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行替换即可。
import sys
import requests
from bs4 import BeautifulSoup
#Server酱推送模块,PUSH_KEY替换自己的
def send_message_fangtang(_item,_message):
token = sys.argv
api = 'https://sctapi.ftqq.com/' + token + '.send'
_d = {
"title": _item,
"desp": _message
}
req = requests.post(api,data = _d)
#print(req.text)
适配青龙面板,需要在脚本同目录存在notify.py文件,且在配置文件设置过相应推送变量,效果如下图
# -*- 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.string.strip().replace('\n', '').replace('\r', '')
gametype = td.string.replace(
" ", "").replace('\n', '').replace('\r', '')
start = td.string.replace(" ", "").replace('\n', '').replace('\r', '')
end = td.string.replace(" ", "").replace('\n', '').replace('\r', '')
time = td.string.replace(" ", "").replace('\n', '').replace('\r', '')
oringin = td.find('span').string.replace(
" ", "").replace('\n', '').replace('\r', '')
sp = str(td).split('"')
http = sp
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()
有个APP小黑盒,上面有领取功能 很厉害! 这是什么???? 萌新看得一脸懵{:1_923:} 待我多看几遍{:1_893:} 可以,这个牛 学习下,感谢分享。 LeslieLau 发表于 2023-9-4 21:45
有个APP小黑盒,上面有领取功能
推荐小黑盒!