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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab晶闸管整流电路,采用Matlab/Simulink对三相桥式全控整流电路的仿真分析

本文利用Simulink对三相桥式全控整流电路进行建模,对不同控制角、桥故障情况下进行了仿真分析,既进一步加深了三相桥式全控整流电路的理论,同时也为现代电力电子实验教学奠定良好的实验基础。1 电路的构成及工作特点三相桥式全控整流电路原理…

flume简介(大数据技术)

1 .背景 flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富&#…

vue中waiting for update signal from wds_10个vue快捷开发技巧助你成为中级前端工程师!(二)...

前言先赞再看,养成习惯~优雅更新props更新 prop 在业务中是很常见的需求,但在子组件中不允许直接修改 prop,因为这种做法不符合单向数据流的原则,在开发模式下还会报出警告。因此大多数人会通过 $emit 触发自定义事件,…

python开发学习笔记之六(面向对象)

面向对象引入: 现在有一个这样的需求:做汽水。 在之前的学习中,我们怎样处理这种类似的问题呢?思考一下,哦,不就是分步骤做嘛,把复杂的问题简单化,分成一个一个的步骤,就…

wampserver php乱码,WampServer搭建php环境可能遇到的问题

WampServer搭建php环境可能遇到的问题1.安装时报错,缺少 MSVCR100.dll 文件这是因为wampServer安装时用到的vc库没有更新,要安装更新之后再进行安装,因为之前安装的VC版本低了,才导致安装的时候提示丢失MSVCR100.dll文件。以下分别…

python总结字典集合列表_python 列表,元组,字典,集合,字符串相互转换

本文主要介绍列表,元组,字典,集合以及和字符串之间的相互转换。1. 列表与元组的互换# 将列表转化为元组li [1, 2, 3]t tuple(li)print(t, type(t))# 打印结果:(1, 2, 3) # 将元组转换成列表tu (1, 2, 3)li list(tu)print(li, type(li))# …

hbase简介(大数据技术)

HBase是什么? HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。 HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS&…

NAT地址转换

2017年1月12日, 星期四NAT地址转换SNAT:源地址转换DNAT:目标地址转换null转载于:https://www.cnblogs.com/jxhd1/p/9521173.html

mysql l日志分析,MySQL的截取与分析日志文件

在处理过程中,对几种常用的日志截取方法进行了汇总和测试:截取日志段的的方法汇总与测试方式一: 确定时间段的行号,使用head和tail命令截取 搜索时间: Time: 151212 00:00:00 先到gg,到文件最前面&#xff…

slide简介(大数据技术)

2.1SLIDER产生背景 为了解决MR1扩展性差、可靠性差、资源利用率低和无法支持多种计算框架等局限性,Apache社区将其升级了计算框架MRv2。Hadoop将资源管理功能抽象成了一个独立的通用系统YARN 在以MapReduce为核心的软件栈中,资源管理系统YARN是可插拔的&…

修改小程序swiper 点的样式_高质量的微信小程序样式模板应该长什么样?

现在不懂技术的小白若想快速制作自己的小程序,一般是通过小程序模板来实现。通过在模板上添加自己的图片、文字、商品等等,可以很简单地生成一个小程序。不过要想把小程序做得好看,你得找高质量的小程序样式模板才行。那么高质量的微信小程序…

spark简介(大数据技术)

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——…

python的concat用法_python的concat等多种用法详解

本文为大家分享了python的concat等多种用法,供大家参考,具体内容如下1、numpy中的concatenate()函数:>>> a np.array([[1, 2], [3, 4]])>>> b np.array([[5, 6]])>>> np.concatenate((a, b), axis0)array([[1, …

impala简介(大数据技术)

一、Impala概述 什么是Impala? Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C 和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。 换句话说&#xf…

论蒟蒻的作死程度

各个BT游戏进度记录 I wanna I wanna be the guy 德古拉(为什么我没有连发器……) 车万 东方红魔乡: nomal第四面 东方妖妖梦: 第五面 东方永夜抄: easyGOODENDING nomal第六面 转载于:https://www.cnblogs.com/tt66ea…

猎豹网matlab视频百度云,猎豹网校C++ Primer初级全套视频教程

1_CppPrimer_快速入门2_CppPrimer_基本内置类型3_CppPrimer_习题解答_2-34_CppPrimer_字面值常量5_CppPrimer_变量6_CppPrimer_变量名7_CppPrimer_定义对象8_CppPrimer_声明和定义9_CppPrimer_名字的作用域10_CppPrimer_const限定符11_CppPrimer_引用12_CppPrimer_typedef13_Cp…

elasticsearch简介(大数据技术)

ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。ElasticSearch 的实现原理主要分为以下几个步骤,首先用户将…

python转为字节_将字节转换为python中的位

I am working with Python3.2. I need to take a hex stream as an input and parse it at bit-level. So I usedbytes.fromhex(input_str)to convert the string to actual bytes. Now how do I convert these bytes to bits?解决方案Another way to do this is by using the…

Linux 监控数据库资源占用

1.用xshell连接远程服务器,登录用户名和密码 2.进入远程服务器 3.输入top,回车,显示如下图所示 4.Cpu states: cpu状态 0,2,4,6 说明cpu是四核的 IDLE 代表闲置CPU百分比 百分号前面数字越大&#xff…

mysql操作窗口如何设置粘贴,Access6.5在表中复制和粘贴数据

在城市和省份两个字段里有很多重复的内容每次都输入一遍显得非常麻烦我们可以结合复制和粘贴数据两个命令将一个数据块很方便地放到很多位置上去 首先打开Access 的剪贴板单击视图菜单将鼠标移动到工具选项上在工具选项右边弹出一个菜单单击上面的剪贴板命在城市和省份两个字段…