追女神助手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 + '\n')
 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 + '\n' 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)

 

posted @ 2017-07-01 10:56  道高一尺  阅读(303)  评论(0编辑  收藏  举报