贴吧是个水很深的地方,有很多潜水的鱼,比如底下留下QQ邮箱的这群人

帖子的内容大概是留邮箱发视频教学(不是我发的啊)。放点鱼饵,潜水的鱼儿都出来了。要是一个个手动发邮箱太累了。还是写个爬虫,来个精准推广群的广告吧。如果你在贴吧留邮箱,说不定会收到哦。
OK,来贴一下代码

#coding=utf-8
import urllib2
import urllib
from lxml import etree
import re
import timeimport smtplib  #加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddrsendFrom='loyalwilliams@163.com' #发件人邮箱账号,为了后面易于维护,所以写成了变量
sendTo='2541692705@qq.com' #收件人邮箱账号,为了后面易于维护,所以写成了变量
passwd="你的邮箱密码" #密码
msg='''
这是一封来自python的邮件'''
def mail(sendFrom,sendTo,passwd,msg):'''发送邮件的方法:param sendFrom: 发送人邮箱:param sendTo: 收件人邮箱:param passwd: 发送邮箱密码:param msg: 发送信息:return: '''ret=Truetry:msg=MIMEText(msg,'plain','utf-8')msg['From']=formataddr(["大数据学习交流",sendFrom])   #括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To']=formataddr(["mylove",sendTo])   #括号里的对应收件人邮箱昵称、收件人邮箱账号msg['Subject']="大数据学习资料" #邮件的主题,也可以说是标题server=smtplib.SMTP("smtp.163.com",25)  #发件人邮箱中的SMTP服务器,端口是25server.login(sendFrom,passwd)    #括号中对应的是发件人邮箱账号、邮箱密码server.sendmail(sendFrom,[sendTo,],msg.as_string())   #括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件server.quit()   #这句是关闭连接的意思except Exception:   #如果try中的语句没有执行,则会执行下面的ret=Falseret=Falsereturn retclass Spider():'''贴吧爬虫类'''def __init__(self):self.tiebaName = raw_input("请输入需要访问的贴吧:")self.beginPage = int(raw_input("请输入起始页:"))self.endPage = int(raw_input("请输入终止页:"))self.count=0# 邮箱匹配规则self.pattern = re.compile(r'\d+@qq.com')self.url = 'http://tieba.baidu.com/f'self.ua_header = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}def myurlopen(self,request):'''访问30次歇0.5秒:param request::return:'''self.count = self.count + 1if (self.count % 30 == 0):time.sleep(0.5)return urllib2.urlopen(request)def tiebaSpider(self):'''爬取贴吧所有帖子的链接:return: 所有帖子的链接列表'''for page in range(self.beginPage, self.endPage + 1):pn = (page - 1) * 50  # page numberword = {'pn': pn, 'kw': self.tiebaName}word = urllib.urlencode(word)  # 转换成url编码格式(字符串)myUrl = self.url + "?" + word# 示例:http://tieba.baidu.com/f? kw=%E7%BE%8E%E5%A5%B3 & pn=50# 调用 页面处理函数 load_Page# 并且获取页面所有帖子链接,selector = self.loadPage(myUrl)  # urllib2_test3.py#  先爬取每个贴吧帖子的连接地址links = selector.xpath('//div[@class="threadlist_title pull_left j_th_tit "]/a/@href')# 每个帖子的链接=基本url拼上相对路径return map(lambda x:"https://tieba.baidu.com"+x,links)# 读取页面内容def loadPage(self, url):'''加载url,返回xpath选择器:param url: :return: '''req = urllib2.Request(url, headers = self.ua_header)html = self.myurlopen(req).read()# 解析html 为 HTML 文档selector=etree.HTML(html)# print htmlreturn selectordef emailSpider(self,url):'''爬取url内的所有qq邮箱:param url: :return: qq邮箱列表'''request = urllib2.Request(url, headers=self.ua_header)content_html = self.myurlopen(request).read()# print content_htmlreturn self.pattern.findall(content_html)def sendMail(sendFrom, sendTo, passwd, msg, tryTimes=3):'''发送邮件,发送失败会重新发送,默认最多尝试3次:param sendFrom: :param sendTo: :param passwd: :param msg: :param tryTimes: :return: '''for i in range(1, tryTimes+1):  #ret = mail(sendFrom, sendTo, passwd, msg)if ret:print("ok,邮件发送成功")  # 如果发送成功则会返回ok,稍等20秒左右就可以收到邮件breakelse:print("失败第[" + i + "/"+tryTimes+"]次,尝试重新发送")  # 如果发送失败则会返回fileddef main():spider = Spider()# 返回一个贴吧帖子的链接列表links = spider.tiebaSpider()#放到一个集合里去掉重复邮件mailSet={''}for link in links:mails = spider.emailSpider(link)for qqMail in mails:if qqMail not in mailSet:mailSet.add(qqMail)print qqMailsendMail(sendFrom, qqMail, passwd, msg)if __name__ =="__main__":main()'''
测试爬虫的方法
'''
def testSpider():spider=Spider()# spider.loadPage("https://tieba.baidu.com/f?kw=hadoop&ie=utf-8&pn=50")# print spider.tiebaSpider()emailList=spider.emailSpider("https://tieba.baidu.com/p/5793741948")print type(emailList),emailList
# testSpider()

代码放在GitHub上,python-learning
以上具体代码在目录crawler/base/urllib2_re_xml/tieba_email.py

我的GitHub
QQ:2541692705
邮箱:loyalwilliams@163.com
微信扫一扫关注我,没事可以玩玩小游戏

我想去流浪,我想去读书,若有机会,江湖再见
扫一扫,领取红包,就当奖励你我付出的努力

Python贴吧邮箱爬虫相关推荐

  1. [网络爬虫|smtp协议|python]东方财富网爬虫,python smtp协议发送爬取数据至QQ邮箱

    本文改自 [网络爬虫|smtp协议|python]东方财富网爬虫,python smtp协议发送爬取数据至QQ邮箱 之前写的爬虫单子,代码已经跑了快3个月了,后续又增加了一些需求,修改了一些小bug ...

  2. Python之Selenium自动化爬虫

    文章目录 Python之Selenium自动化爬虫 0.介绍 1.安装 2.下载浏览器驱动 3.实例 4.开启无头模式 5.保存页面截图 6.模拟输入和点击 a.根据文本值查找节点 b.获取当前节点的 ...

  3. python爬虫小说代码示例-中文编程,用python编写小说网站爬虫

    原标题:中文编程,用python编写小说网站爬虫 作者:乘风龙王 原文:https://zhuanlan.zhihu.com/p/51309019 为保持源码格式, 转载时使用了截图. 原文中的源码块 ...

  4. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章

    原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...

  5. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  6. python中国大学排名爬虫写明详细步骤-python中国大学排名爬虫

    python 中国大学排名爬虫 首先,给一个最好大学网URL:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html, 点击这里进入 . 功能描述 ...

  7. php和python写爬虫-一个简单的Python写的XML爬虫

    一个简单的Python写的XML爬虫 来源:程序员人生 发布时间:2013-11-06 16:22:29 阅读次数:1578次 原理很简单,读XML结构,返回值,判断,根据返回的值得到下一个XML的地 ...

  8. python多线程爬虫实例-python支持多线程的爬虫实例

    python是支持多线程的, 主要是通过thread和threading这两个模块来实现的,本文主要给大家分享python实现多线程网页爬虫 一般来说,使用线程有两种模式, 一种是创建线程要执行的函数 ...

  9. python从零基础到项目实战怎么样-Python 3.x网络爬虫从零基础到项目实战

    ● 案例完整 本书中的所有案例都是通过"理论讲解 + 环境搭建 + 完整代码及分析 + 运行结果"这种完善的结构进行讲解的.此外,复杂的案例配有项目结构图,有难度的案例还分析了底层 ...

  10. 七月在线python数据分析_七月在线Python基础+数据分析班+爬虫项目

    资源介绍 七月在线Python基础+数据分析班+爬虫项目 目录 ├─Python基础入门班2017年 ││代码.rar │└─视频 │xa0 xa0 01.第1课 入门基础.rar │xa0 xa0 ...

最新文章

  1. Python学习入门基础教程(learning Python)--3.2 if-else分支语句
  2. sql日期相关函数的使用方法
  3. 2021年客户需求的新变化,带来了对程序员能力要求的新高度
  4. 塔拉 孤岛危机2_《孤岛危机》新作爆料!类似于《绝地求生》的多人游戏
  5. 新手找客户,牢记20句话
  6. 和会员说再见!抖音、西瓜视频独家免费上线14部院线大片
  7. Leetcode 32.最长有效括号
  8. 虚拟机安装windows xp系统时,找不到网络连接
  9. c#控制台应用程序读取 config
  10. 系统分析师 考试大纲
  11. 使用python,生成符合zipf分布的数据集
  12. 用matlab绘制分段函数曲线
  13. Applied Cryptography:chapter 11 数学背景
  14. bootcmd执行过程
  15. 树莓派串口简单测试语音识别模块
  16. MTK平台俄罗斯方块游戏评审
  17. 项目优化:当使用redis减少数据库压力时,遇到redis写入失败,造成读取数据问题的解决方案
  18. 标准体系,技术标准,政策标准,开发模板
  19. Edraw Max(亿图图示)教程:使用免费模板和示例快速制作发票?
  20. 应广PMS171B(1)--概述配置端口输出高低电平

热门文章

  1. Spring学习—Spring中定时器实现
  2. 九、一个IC设计的公司的组织架构和部门职能
  3. 破解版xmind 8
  4. 软件测试——selenium环境搭建及自动化测试
  5. Oracle Exadata 技术详解 - 李亚
  6. Spotfire 表达式之日期和时间函数
  7. HashMap如何解决hash冲突?
  8. 【转发】ext4文件系统
  9. PHP图片与文字合成
  10. log4j 日志书写格式_Log4J日志配置详解