Python贴吧邮箱爬虫
贴吧是个水很深的地方,有很多潜水的鱼,比如底下留下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贴吧邮箱爬虫相关推荐
- [网络爬虫|smtp协议|python]东方财富网爬虫,python smtp协议发送爬取数据至QQ邮箱
本文改自 [网络爬虫|smtp协议|python]东方财富网爬虫,python smtp协议发送爬取数据至QQ邮箱 之前写的爬虫单子,代码已经跑了快3个月了,后续又增加了一些需求,修改了一些小bug ...
- Python之Selenium自动化爬虫
文章目录 Python之Selenium自动化爬虫 0.介绍 1.安装 2.下载浏览器驱动 3.实例 4.开启无头模式 5.保存页面截图 6.模拟输入和点击 a.根据文本值查找节点 b.获取当前节点的 ...
- python爬虫小说代码示例-中文编程,用python编写小说网站爬虫
原标题:中文编程,用python编写小说网站爬虫 作者:乘风龙王 原文:https://zhuanlan.zhihu.com/p/51309019 为保持源码格式, 转载时使用了截图. 原文中的源码块 ...
- python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章
原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...
- python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...
- python中国大学排名爬虫写明详细步骤-python中国大学排名爬虫
python 中国大学排名爬虫 首先,给一个最好大学网URL:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html, 点击这里进入 . 功能描述 ...
- php和python写爬虫-一个简单的Python写的XML爬虫
一个简单的Python写的XML爬虫 来源:程序员人生 发布时间:2013-11-06 16:22:29 阅读次数:1578次 原理很简单,读XML结构,返回值,判断,根据返回的值得到下一个XML的地 ...
- python多线程爬虫实例-python支持多线程的爬虫实例
python是支持多线程的, 主要是通过thread和threading这两个模块来实现的,本文主要给大家分享python实现多线程网页爬虫 一般来说,使用线程有两种模式, 一种是创建线程要执行的函数 ...
- python从零基础到项目实战怎么样-Python 3.x网络爬虫从零基础到项目实战
● 案例完整 本书中的所有案例都是通过"理论讲解 + 环境搭建 + 完整代码及分析 + 运行结果"这种完善的结构进行讲解的.此外,复杂的案例配有项目结构图,有难度的案例还分析了底层 ...
- 七月在线python数据分析_七月在线Python基础+数据分析班+爬虫项目
资源介绍 七月在线Python基础+数据分析班+爬虫项目 目录 ├─Python基础入门班2017年 ││代码.rar │└─视频 │xa0 xa0 01.第1课 入门基础.rar │xa0 xa0 ...
最新文章
- Python学习入门基础教程(learning Python)--3.2 if-else分支语句
- sql日期相关函数的使用方法
- 2021年客户需求的新变化,带来了对程序员能力要求的新高度
- 塔拉 孤岛危机2_《孤岛危机》新作爆料!类似于《绝地求生》的多人游戏
- 新手找客户,牢记20句话
- 和会员说再见!抖音、西瓜视频独家免费上线14部院线大片
- Leetcode 32.最长有效括号
- 虚拟机安装windows xp系统时,找不到网络连接
- c#控制台应用程序读取 config
- 系统分析师 考试大纲
- 使用python,生成符合zipf分布的数据集
- 用matlab绘制分段函数曲线
- Applied Cryptography:chapter 11 数学背景
- bootcmd执行过程
- 树莓派串口简单测试语音识别模块
- MTK平台俄罗斯方块游戏评审
- 项目优化:当使用redis减少数据库压力时,遇到redis写入失败,造成读取数据问题的解决方案
- 标准体系,技术标准,政策标准,开发模板
- Edraw Max(亿图图示)教程:使用免费模板和示例快速制作发票?
- 应广PMS171B(1)--概述配置端口输出高低电平