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
總結
以上是生活随笔為你收集整理的python爬取百度贴吧中的所有邮箱_python写的百度贴吧邮箱采集(带界面)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串去掉空格
- 下一篇: python聚类分析结果很差_pytho