-
總覽:
- 項(xiàng)目結(jié)構(gòu)
- 代碼
- 部署及啟動(dòng)
-
項(xiàng)目結(jié)構(gòu):
項(xiàng)目結(jié)構(gòu) 代碼: (一共需要三個(gè)文件)
- run_linux.py(用于一鍵啟動(dòng))
- ntxs.py(用于查找數(shù)據(jù))
- logging_ntxs(用于記錄日志)
run_linux.py
import os
def run(file):
# 獲取上一級(jí)目錄
root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 當(dāng)前目錄
local_path = os.path.dirname(os.path.abspath(__file__))
# 虛擬環(huán)境路徑
activate_path = f"{root}/venv/bin/activate"
# 激活虛擬環(huán)境以及啟動(dòng)程序
os.system(f". {activate_path} && python {local_path}/{file}")
if __name__ == '__main__':
# 程序主文件
file_name = r"ntxs.py"
run(file_name)
ntxs.py
import time
from logging_ntxs import get_logger
import os
import requests
from lxml import etree
import re
def get_title():
# 爬取頁(yè)面
url = "https://www.bswtan.com/0/51/"
# 設(shè)置headers
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/97.0.4692.99 Safari/537.36",
}
# 獲取html
r = requests.get(url=url, headers=headers)
r.encoding = r.apparent_encoding
html = r.text
# 利用xpath獲取最后一章節(jié)標(biāo)題
tree = etree.HTML(html)
last_title = tree.xpath('//*[@id="list"]/dl/dd/a/text()')[-1]
# 將章節(jié)中的數(shù)字提取出來(lái)
num = int(re.findall(r'\d+', last_title)[0])
return num, last_title
def send_email(message):
# 此處換成你的郵箱或者郵箱模塊即可, 不需要郵件通知也可以刪除此方法
commend = f"echo '{message}' | mail -s '[提示] 逆天邪神已更新!' 郵箱@qq.com"
os.system(commend)
logger.info("郵件已發(fā)送!")
if __name__ == '__main__':
# 返回元組, 第一個(gè)為章節(jié), 第二個(gè)為完整標(biāo)題
chapter_old = get_title()[0]
file_path = "/root/logs/ntxs.log"
logger = get_logger(file_path)
while True:
# 獲取元組
chapter_now_tuple = get_title()
# 獲取章節(jié)
chapter_now = chapter_now_tuple[0]
# 獲取完整標(biāo)題
chapter_now_title = chapter_now_tuple[1]
if chapter_now > chapter_old:
logger.warning(f"發(fā)現(xiàn)新章節(jié), {chapter_now_title}!")
# 發(fā)送郵件
send_email(f"發(fā)現(xiàn)新章節(jié)!, {chapter_now_title}, 速速上號(hào)!")
# 改變判斷條件
chapter_old = chapter_now
else:
logger.info(f"暫無(wú)更新, 目前依舊為{chapter_now_title}!")
# 每十五分鐘查詢(xún)一次
time.sleep(900)
logging_ntxs.py
import logging
def get_logger(path):
# 格式化輸出
for_mat = "[%(levelname)s]: %(asctime)s PID->%(process)d [信息]: %(message)s"
# 初始化設(shè)置, 禁用全局日志等級(jí)
logging.basicConfig(filename=path, format=for_mat, filemode='w')
# 將requests設(shè)置為WARNING
logging.getLogger("requests").setLevel(logging.WARNING)
# 將其他文件設(shè)置為DEBUG
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
return logger
- 部署及自啟動(dòng)!!!!
創(chuàng)建目錄
1,新建一個(gè)名為ntxs的文件夾
2,在該目錄內(nèi)創(chuàng)建一個(gè)名為code的文件夾
3,將3個(gè)代碼文件放入code中創(chuàng)建虛擬環(huán)境, 及安裝依賴(lài)
1, 回到ntxs文件夾
2, 執(zhí)行python -m venv venv
3, 進(jìn)入venv文件夾進(jìn)入bin目錄輸入source activate
4, pip install requesta lxml
5, deactivate
6, 至此安裝完成添加自啟動(dòng)
1, crontab -e
2, 將一下內(nèi)容復(fù)制進(jìn)去即可, 注意修改位置
# 啟用逆天邪神追蹤
@reboot nohup python /root/code/ntxs/code/run_linux.py > /dev/null 2>&1 &
# 每周天00點(diǎn)清空日志
0 0 * * 0 > /root/logs/ntxs.log
- 現(xiàn)在重啟(reboot), 或者輸入以下即可全天候等待更新!
nohup python /root/code/ntxs/code/run_linux.py > /dev/null 2>&1 &
- 有更新時(shí)會(huì)自動(dòng)發(fā)送到你設(shè)置的郵箱, 需設(shè)置postfix(具體google), 或者自己寫(xiě)個(gè)郵件模塊更好
-
并且可以查詢(xún)?nèi)罩?/p>
日志信息 - 此教程基于linux!!!!!!!(ubuntu20.04或者debian系的都可以直接使用)
- 不建議將搜索間隔調(diào)整過(guò)快, 可能會(huì)封ip,而且對(duì)小說(shuō)平臺(tái)也會(huì)造成一定影響

