import requests
import os
import re
import time
from lxml import etree
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
obj = re.compile(".*? <span class=\"b1\">活动分类:社会实践与志愿服务</span><a title=\"(?P<area>.*?)\">")
obj2 = re.compile(".*?<title>(?P<name>.*?)</title>")
header = {"Cookie": "PHPSESSID=49583d35641d2af8d3382; TS_think_language=zh-CN; Hm_lvt_dd3ea352543392a029ccf9da1be54a50=1679633147; TS_LOGGED_USER=pL7E4CrK54T2xOHv9ADJFSo0%3D; Hm_lpvt_dd3ea352543392a029ccf9da1be54a50=1679635853"}
def handle(url_list):
child_url=[]
for url in url_list:
resp = requests.get(url)
resp.close()
resp_tree=etree.HTML(resp.text)
child_url.extend(resp_tree.xpath("/html/body/div[2]/div/div[3]/div[2]/div[1]/ul/li/div[2]/div[1]/a/@href"))
return child_url
def handle2(child_urls):
x=1
active_name_list=[]
for url in child_urls:
resp = requests.get(url,headers=header)
resp.close()
active_area = str(obj.findall(resp.text)).replace("[","").replace("]","").replace("'","").replace(" ","")
active_name =str(obj2.findall(resp.text)).replace("[","").replace("]","").replace("'","").replace(" ","")
if active_area =='':
active_name_list.append(active_name)
return active_name_list
def send_email(text):
smtpsrever = 'smtp.qq.com'
# 发送邮件的用户名和密码
username = '2338206089@qq.com'
password = '用你自己打的·' # 授权密码
# 接收邮件的邮箱
receiver = '3454638598@qq.com'
# 创建邮件对象
message = MIMEMultipart('relate') # 生成一个带附件的邮件对象
message = MIMEText(f'{text}', 'plain', 'utf-8')
subject = "pu口袋校园活动" # 邮件的主题
# 把邮件的信息组装到邮件对象里
message['from'] = username
message['to'] = receiver
message['subject'] = subject
# 登录smtp服务器并发送邮件
smtp = smtplib.SMTP()
smtp.connect(smtpsrever)
smtp.login(username, password)
smtp.sendmail(username, receiver, message.as_string())
smtp.quit()
def get_page_url():
url_list=[]
for num in range(1,8+1):
url = f"https://XXX.pocketuni.net/index.php?app=event&mod=School&act=board&cat=all&&p={num}"
url_list.append(url)
return url_list
if __name__=='__main__':
old_list=[]
x=1
while True:
url_list=get_page_url()
child_urls=handle(url_list)
active_name_list=handle2(child_urls)
if x==1:
old_list = old_list+active_name_list
send_email(old_list)
x+=1
update_list = [x for x in active_name_list if x not in old_list]
if len(update_list)==0:
print("未出现新活动,最近一次更新时间为",time.strftime('%H:%M:%S',time.localtime(time.time())))
else:
print("出现新活动,发送 速抢")
send_email(update_list)
time.sleep(10)