python爬取百度贴吧中的所有邮箱_python写的百度贴吧邮箱采集(带界面)

from main_def import *

importrequests,reimportdatetime,timefrom tkinter importEND

headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36"}#单个帖子爬虫

deftz_cj(url,time_xz):#########-----------分割线--------------#############################

#########------------开始帖子邮箱采集-------------####################

#选择采集时间控制变量,1 为当天,7 为前七天,10 为不限制时间

#time_xz = 7

#获取当前时间

time1 = datetime.datetime.now().strftime('%Y-%m-%d')#邮箱存储列表

yx_list =[]#循环控制变量

pn = 1

whileTrue:

t_url= url + "?pn=" +str(pn)

t_re_html= requests.get(t_url, headers=headers).text#获取页数

red = re.findall('(.*?)', t_re_html)[0]#正则匹配提取每一个楼层

t_nr_1 = re.findall('


', t_re_html, re.S)

t_nr_2= re.findall('

(.*?)

t_nr= t_nr_1 +t_nr_2#循环遍历页面所有楼层

for re_lc int_nr:#这里做一个错误跳转,楼层没有邮箱则跳过

try:#提取楼层发布时间

times = re.search(r"(\d{4}-\d{1,2}-\d{1,2})", re_lc)

tims=(times.group(0))#提取楼层邮箱

pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}'items=re.findall(pattern, re_lc)[0]#判断采集当天

if time_xz == 1:#只爬取当天邮箱

if time1 ==tims:

yx_list.append(items)#判断采集前七天

elif time_xz == 7:

time7= datetime.datetime.today().date() - datetime.timedelta(days=8)if str(tims) >str(time7):

yx_list.append(items)#判断采集不限制时间

elif time_xz == 10:

yx_list.append(items)except:continue

#加页数

pn = pn + 1

#判断翻页完成跳出循环

if pn - 1 ==int(red):breaktime.sleep(0.5)return yx_list #返回采集到的邮箱

#文件写入函数

def text_save(filename,data,ts,text2): #filename为写入文件的路径,data为要写入数据列表.

datas = list(set(data)) #去除重复邮箱

times = datetime.datetime.now().strftime('%Y-%m-%d-%H')

file= open(times + "-" + filename + "吧邮箱采集文件.txt", 'a')for i inrange(len(datas)):

s= str(datas[i]).replace('[', '').replace(']', '') #去除[],这两行按数据不同,可以选择

s = s.replace("'", '').replace(',', '') + '\n' #去除单引号,逗号,每行末尾追加换行符

file.write(s)

file.close()

text2.insert(END,"第%d个帖邮箱采集成功保存文件!"%ts + '\n')

wjm= times + "-" + filename + "吧邮箱采集文件.txt"

return wjm #把文件名返回

#页面入口函数

def tieba_caiji(kw,time_xz,text2,pn,yx,bcwj): #kw传贴吧名,time_xz采集控制当天 text2传一个句柄 ,yx传运行状态 pn 传贴吧翻页

whileTrue:for ye in range(int(pn)): #这个循环是循环贴吧翻页

pn = ye * 50url= "https://tieba.baidu.com/f?kw=%s&ie=utf-8&pn=%d" %(kw, pn)#爬贴吧第一页的所有帖子

html = requests.get(url, headers=headers).text

re_html= re.findall('

(.*?)
', html, re.S)

ts= 1 #统计帖数

for i inre_html:

href= re.findall('href="(.*?)"', i, re.S)[0]

t_url= "https://tieba.baidu.com" +href

yx_list=tz_cj(t_url, time_xz)

wjm=text_save(kw, yx_list, ts, text2)

time.sleep(3)

ts= ts + 1text2.insert(END,"%s吧第%d页采集完成!" % (kw,ye+1) + '\n')

text2.insert(END,"%s吧采集完成!" % (kw) + '\n')#保存入今日文件

if bcwj == 2:

wenjian_xr(wjm)#如果为 2 则等待1小时 运行

if yx == 2:

time.sleep(3600)#翻页完成,退出软件

else:break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值