学习笔记(二) 根据发帖时间,删除相关帖子

本文介绍了一种使用Python批量获取并按时间戳筛选删除特定论坛帖子的方法。通过解析HTML页面提取帖子ID和发布时间,利用多线程提高处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import re
from New_MyPython.Community_MyThread.Requse.HttpReq import Http
import time
import threading

''' 思路
    一、将帖子tid取出
    二、根据tid,获取当前帖子时间
    三、将时间转换为时间戳,用来做时间隔断
    四、将通过时间戳分割出来的帖子删除,并返回tid时间
'''

def find(stri, html):
    strin = stri
    respone = re.findall(strin, html)
    return respone


def tid(page):
    url = 'http://www.oppo.cn/thread/thread/index.json?page=%s&limit=21&uid=46344778' % page
    html = Http().get(url)
    st = '"id":"(.*?)","'
    tids = find(st, html)
    return tids


def thread_time(page):
    tid_times = []
    tids = tid(page)
    for i in tids:
        url = 'http://www.oppo.cn/thread-%s-1' % i
        # url = 'http://www.oppo.cn/thread-196321006-1'
        html = Http().get(url)
        stri = '</i>(.*?)</span>'
        _time = re.findall(stri, html)
        # print(_time[0], '字节长度--》',len(_time[0]))
        '''
            以下代码补充时间格式,满足时间戳转换
        '''
        if len(_time[0]) < 12:
            _time = '2018-' + _time[0] + ':00'
            # print('没有年份的时间叠加-----',_time)
        elif len(_time[0]) == 16:
            _time = _time[0] + ':00'
            # print('有年份的时间叠加>>>>>>', _time)
        tim = time_convert(_time)
        print('正在转换时间格式为时间戳..', tim)
        tid_times.append(tim)
    tid_time_zip = dict(zip(tid_times, tids))
    return tid_times, tid_time_zip  # 返回uid,便于辨别相关帖子


def time_convert(tim):  # 将时间转换为时间戳
    timeArray = time.strptime(tim, '%Y-%m-%d %H:%M:%S')
    timeStamp = int(time.mktime(timeArray))
    return timeStamp


def time_Format(tim):  # 将时间格式化
    timeArray = time.localtime(tim)
    otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
    return otherStyleTime


def del_thread(tid_dict, tim):
    for i in tim:
        time_int = int(i)
        if time_int > 1515979740:
            tid = tid_dict[i]
            _time = time_Format(time_int)
            url = 'http://i.thread.oppo.cn/thread/v1/index/delete.json?'
            data = {'token': '**TOKEN_AS0zrbkNjrkHPbnW5Q2C5aJ45fFbMM4%2F5S%2BPYk1ySObE8VD%2BN2BEkUMqy%2BhuprqU',
                    # 'ukey': '**81765b375e5adf2862db3781716e04aceb71a1535748ef3c7d729ca8cc9608fba3964a930a6e692b825db8466ee02d75',
                    'tid': tid
                    }
            html = Http().post(url, data)
            print(html)
            print('正在删除', tid, '\n发帖时间为', _time)
        else:
            tid = tid_dict[i]
            _time = time_Format(time_int)
            print('未删除', tid, '\n发帖时间为:', _time)


class MyThread(threading.Thread):

    def __init__(self, name, page):
        super().__init__()
        self.name = name
        self.page = page
        self.lock = threading.Lock()

    def run(self):
        print(self.name + '线程开始')
        self.lock.acquire()
        tim, tid_dict = thread_time(self.page)
        del_thread(tid_dict, tim)
        self.lock.release()
        print(self.name + '线程结束')


if __name__ == "__main__":
    # tim=['1516055220']
    # tid_dict={'1516055220':'195233716'}
    strat_time=time.time()
    thread_name = ['thread1', 'thread2']
    thread1=MyThread(thread_name[0],1)
    thread2=MyThread(thread_name[1],2)
    thread1.start()
    thread2.start()
    thread1.join()
    thread2.join()
    end_time=time.time()
    print('耗时:'+str(end_time-strat_time)+'秒')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值