用python获取贴吧中留下的邮箱

   正所谓得屌丝着得天下,贴吧就是屌丝们聚集的地方,有时候会看到楼主发一个福利帖子,然后下面留下几页的邮箱。这么多邮箱,收集起来就可以做一些邪恶的事情

我的思路:(我没有用多线程,如果你想大量收集的话,可以采用多线程)

1.获取首页的50个帖子的地址

2.进入每个帖子,获取帖子的页数

3.如果这个帖子第一页没有邮箱,就爬下一个帖子,免得浪费资源

4.我只是把邮箱打印出了,需要的话自己可以写进函数,存到自己的硬盘上

import urllib
import re
import threading
                
#获得网页源码
def getHtml(url):
    html=urllib.urlopen(url).read()
    return html
#html是网页源码,regx是正则表达式
def getRegx(html,regx):
    reg=re.compile(regx)
    result=re.findall(reg,html)
    return result

def getMail(website):
     for i in range(10):
        ipn=i*50
        url=website+'&pn=%d' % ipn
        #print '----第%d页-----' % i
        #获得每个帖子的网址       
        xurllist=getRegx(getHtml(url),url_regx)
        for i in range(len(xurllist)):
            xurl='http://tieba.baidu.com'+xurllist[i]
         
             #获得页数
            pn=getRegx(getHtml(xurl),pn_regx)
            print '----------------------------'
            print '第%d个帖子,共有%d页' % (i,int(pn[0]))
            for j in range(1,int(pn[0])):
                #获得邮箱
                pnurl=xurl+'?pn=%d' % j
                #print pnurl
                maillist=getRegx(getHtml(pnurl),mail_regx)
                #print '-----------------'
                print '--第%d页:' % j
                print '--网址:'+pnurl
                print '--邮箱个数:'+str(len(maillist))
                #如果第一页每一邮箱就退出
                if len(maillist)==0:
                    break
                else:
                   
                    for mail in maillist:
                        print mail

if __name__=='__main__':
    #获取页数的正则
    pn_regx=r'<span class="red">(.*?)<'
    #获取qq邮箱的正则
    mail_regx=r'(\d{9,10}@qq\.com)'
    #获得每个帖子的正则
    url_regx=r'<div class="threadlist_text threadlist_title j_th_tit  notStarList "><a href="(.*?)"'
    url=raw_input('the website:')
    getMail(url)
结果:


注意:

1.我获取的只有qq邮箱,我觉得qq邮箱的价值可能要高点

2.好像查看贴吧第二页的帖子需要登录,python模拟登录百度的源码,网上很多

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值