zoukankan      html  css  js  c++  java
  • 追女神助手v0.1

      1 #-*-coding:utf8-*-
      2 
      3 import smtplib
      4 from email.mime.text import MIMEText
      5 import requests
      6 from lxml import etree
      7 import os
      8 import time
      9 import sys
     10 reload(sys)
     11 sys.setdefaultencoding('utf-8')
     12 
     13 
     14 
     15 class mailhelper(object):
     16     '''
     17     这个类实现发送邮件的功能
     18     '''
     19     def __init__(self):
     20 
     21         self.mail_host="smtp.xxxx.com"  #设置服务器
     22         self.mail_user="xxxx"    #用户名
     23         self.mail_pass="xxxx"   #密码
     24         self.mail_postfix="xxxx.com"  #发件箱的后缀
     25 
     26     def send_mail(self,to_list,sub,content):
     27         me="xxoohelper"+"<"+self.mail_user+"@"+self.mail_postfix+">"
     28         msg = MIMEText(content,_subtype='plain',_charset='utf-8')
     29         msg['Subject'] = sub
     30         msg['From'] = me
     31         msg['To'] = ";".join(to_list)
     32         try:
     33             server = smtplib.SMTP()
     34             server.connect(self.mail_host)
     35             server.login(self.mail_user,self.mail_pass)
     36             server.sendmail(me, to_list, msg.as_string())
     37             server.close()
     38             return True
     39         except Exception, e:
     40             print str(e)
     41             return False
     42 
     43 class xxoohelper(object):
     44     '''
     45     这个类实现将爬取微博第一条内容
     46     '''
     47     def __init__(self):
     48         self.url = 'http://weibo.cn/u/xxxxxxx' #请输入准备抓取的微博地址
     49         self.url_login = 'https://login.weibo.cn/login/'
     50         self.new_url = self.url_login
     51 
     52     def getSource(self):
     53         html = requests.get(self.url).content
     54         return html
     55 
     56     def getData(self,html):
     57         selector = etree.HTML(html)
     58         password = selector.xpath('//input[@type="password"]/@name')[0]
     59         vk = selector.xpath('//input[@name="vk"]/@value')[0]
     60         action = selector.xpath('//form[@method="post"]/@action')[0]
     61         self.new_url = self.url_login + action
     62         data = {
     63             'mobile' : 'xxxxx@xxx.com',
     64              password : 'xxxxxx',
     65             'remember' : 'on',
     66             'backURL' : 'http://weibo.cn/u/xxxxxx', #此处请修改为微博地址
     67             'backTitle' : u'微博',
     68             'tryCount' : '',
     69             'vk' : vk,
     70             'submit' : u'登录'
     71             }
     72         return data
     73 
     74     def getContent(self,data):
     75         newhtml = requests.post(self.new_url,data=data).content
     76         new_selector = etree.HTML(newhtml)
     77         content = new_selector.xpath('//span[@class="ctt"]')
     78         newcontent = unicode(content[2].xpath('string(.)')).replace('http://','')
     79         sendtime = new_selector.xpath('//span[@class="ct"]/text()')[0]
     80         sendtext = newcontent + sendtime
     81         return sendtext
     82 
     83     def tosave(self,text):
     84         f= open('weibo.txt','a')
     85         f.write(text + '
    ')
     86         f.close()
     87 
     88     def tocheck(self,data):
     89         if not os.path.exists('weibo.txt'):
     90             return True
     91         else:
     92             f = open('weibo.txt', 'r')
     93             existweibo = f.readlines()
     94             if data + '
    ' in existweibo:
     95                 return False
     96             else:
     97                 return True
     98 
     99 if __name__ == '__main__':
    100     mailto_list=['xxxxx@qq.com'] #此处填写接收邮件的邮箱
    101     helper = xxoohelper()
    102     while True:
    103         source = helper.getSource()
    104         data = helper.getData(source)
    105         content = helper.getContent(data)
    106         if helper.tocheck(content):
    107             if mailhelper().send_mail(mailto_list,u"女神更新啦",content):
    108                 print u"发送成功"
    109             else:
    110                 print u"发送失败"
    111             helper.tosave(content)
    112             print content
    113         else:
    114             print u'pass'
    115         time.sleep(30)
  • 相关阅读:
    清华大学2015年自主招生暨领军计划试题
    高斯取整函数专题
    国际上的数学比赛
    清华大学数学系本科用什么教材?
    数学人眼中的湖北
    北京十一学校潘国双:激发学习的内在动力
    数学家Erdos的故事
    CentOS7关于网络的设置
    MySQL表连接
    MySQL的sql解析
  • 原文地址:https://www.cnblogs.com/themost/p/7101651.html
Copyright © 2011-2022 走看看