本帖最后由 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 代码
# -*- 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[i] + '\n\n')
self.res.append(NewsText[i].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 图片示例
" alt="" />
" alt="" />
|