zoukankan      html  css  js  c++  java
  • Python 爬虫监控女神的QQ空间新的说说,实现秒赞,并发送说说内容到你的邮箱

    这个文章主要是在前一篇文章上新增了说说秒赞的功能

    前一篇文章可以了解一下

    那么,这次主要功能就是

    监控女神的 QQ空间,一旦女神发布新的说说,马上点赞,你的邮箱马上就会收到说说内容,是不是想了解一下

    直接上代码吧:

    # -*- coding:utf-8 -*-
    from selenium import webdriver
    import time
    import os
    
    from email.mime.text import MIMEText
    import smtplib
    
    # by 留歌36
    
    #注意配置你的原始邮箱(发送邮件的邮箱)
    account = "###"
    password = "###"
    
    #注意配置你的接收邮箱
    to = "###"
    
    #注意配置你女神的邮箱
    qq="###"
    
    
    #使用Selenium的webdriver实例化一个浏览器对象,在这里使用Phantomjs
    driver = webdriver.PhantomJS(executable_path=r"F:\phantomjs.exe")
    
    # 登录QQ空间
    def get_shuoshuo(qq):
        try:
            #注意配置你的女神的QQ号码http://user.qzone.qq.com/{你的女神的qq号码}/311'.format(qq)
            driver.get('http://user.qzone.qq.com/你的女神的qq号码/311'.format(qq))
            time.sleep(5)
            driver.find_element_by_id('login_div')
        except:
            print("#####,没有找到login_div,说明您在线########")
            sea()
            time.sleep(10)
            #注意配置你女神的qq号码
            get_shuoshuo('###')
        else:
            print("#####,找到login_div,说明您没有登陆,现在开始登陆########")
            # 如果页面存在登录的DIV,则模拟登录
            driver.switch_to.frame('login_frame')
            driver.find_element_by_id('switcher_plogin').click()
            driver.find_element_by_id('u').clear()  # 选择用户名框
            #注意配置你的qq账号
            driver.find_element_by_id('u').send_keys('###')
            driver.find_element_by_id('p').clear()
            #注意配置你的qq密码
            driver.find_element_by_id('p').send_keys('###')
            driver.find_element_by_id('login_button').click()
            time.sleep(3)
            print("#####登陆成功########")
            #注意配置你女神的qq账号
            get_shuoshuo('###')
            #判断好友空间是否设置了权限,通过判断是否存在元素ID:QM_OwnerInfo_Icon
        driver.implicitly_wait(3)
    
    def sea():
        try:
            driver.find_element_by_id('QM_OwnerInfo_Icon')
            b = True
        except:
            b = False
        #如果有权限能够访问到说说页面,那么定位元素和数据,并解析
        if b == True:
            driver.switch_to.frame('app_canvas_frame')
            content = driver.find_elements_by_css_selector('.content')
            stime = driver.find_elements_by_css_selector('.c_tx.c_tx3.goDetail')
            btns = driver.find_elements_by_css_selector('.qz_like_btn.c_tx.mr8')
    
            shuoshuo = content[0].text
            shijian= stime[0].text
            context = '说说内容为:'+ shuoshuo
            # context = '说说内容为:' + shuoshuo + "       " + '发表时间是:' + shijian
            cun = ''.join(context)
            if toCheck(cun):
                # 调用点赞的函数
                print("##########准备点赞##########")
                dian(btns)
                print("##########点赞完成##########")
                # 调用发送邮件的函数
                print("##########准备发送邮件##########")
                send(to, "女神空间更新啦~~", context)
                print("##########发送邮件完成##########")
                print("##########准备保存说说##########")
                toSave(cun)
                print("##########保存说说完成##########")
            else:
                print('pass,还没有更新新的说说')
    
    
    def dian(btns):
        n = 0;
        for btn in btns:
            try:
                if btn.is_displayed() == True:
                    if btn.text.find(u"赞") == 0:
                        btn.click()
                        n += 1
                        print ("点赞", n)
    
            except:
                print("已经点赞过了第一条说说")
                pass
    
    def send(to, title, content):
        msg = MIMEText(content)
        msg['Content-Type'] = 'text/plain; charset="utf-8"'
        msg['Subject'] = title
        msg['From'] = account
        msg['To'] = to
        try:
            smtp = smtplib.SMTP()
            smtp.connect('smtp.163.com')
            smtp.login(account, password)
            smtp.sendmail(account, to, msg.as_string())
            smtp.close()
        except Exception as e :
            print (str(e))
    
    def toCheck(data):
        if not os.path.exists('lhshuoshuo.txt'):
            return True
        else:
            f = open('lhshuoshuo.txt','r')
            existshuoshuo= f.readlines();
            if data + '
    ' in existshuoshuo:
                return False
            else:
                return True
    
    def toSave(text):
        f = open('lhshuoshuo.txt' , mode='a')
        f.write(text+ '
    ')
        f.close()
    
    #让代码在服务器上一直跑着
    while True:
        get_shuoshuo(qq)
    

    *还是那样,如果你有什么好的建议可以留言呢
    有什么问题也可以留言,我会尽量第一时间回复你的*

  • 相关阅读:
    SDUT 2143 图结构练习——最短路径 SPFA模板,方便以后用。。 Anti
    SDUT ACM 1002 Biorhythms 中国剩余定理 Anti
    nyist OJ 119 士兵杀敌(三) RMQ问题 Anti
    SDUT ACM 2157 Greatest Number Anti
    SDUT ACM 2622 最短路径 二维SPFA启蒙题。。 Anti
    二叉索引树 区间信息的维护与查询 Anti
    SDUT ACM 2600 子节点计数 Anti
    UVA 1428 Ping pong 二叉索引树标准用法 Anti
    2010圣诞Google首页效果
    Object
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614800.html
Copyright © 2011-2022 走看看