• 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)
    

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

  • 相关阅读:
    树莓派成长日记03
    一些特殊文字的过滤Private Use Area:E000F8FF
    MongoDb 相关
    SQL 相关技术点收集贴
    正则表达式提取文本的日期
    MVC 相关技术点收集贴
    使用 json2.js注意点
    C#画图 GDI+
    PHP模拟POST,验证页面的返回状态
    EF-Entity Framework 相关技术点收集贴
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614800.html
Copyright © 2020-2023  润新知