#-*-coding:utf8-*-

 import smtplib
from email.mime.text import MIMEText
import requests
from lxml import etree
import os
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8') class mailhelper(object):
'''
这个类实现发送邮件的功能
'''
def __init__(self): self.mail_host="smtp.xxxx.com" #设置服务器
self.mail_user="xxxx" #用户名
self.mail_pass="xxxx" #密码
self.mail_postfix="xxxx.com" #发件箱的后缀 def send_mail(self,to_list,sub,content):
me="xxoohelper"+"<"+self.mail_user+"@"+self.mail_postfix+">"
msg = MIMEText(content,_subtype='plain',_charset='utf-8')
msg['Subject'] = sub
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
server = smtplib.SMTP()
server.connect(self.mail_host)
server.login(self.mail_user,self.mail_pass)
server.sendmail(me, to_list, msg.as_string())
server.close()
return True
except Exception, e:
print str(e)
return False class xxoohelper(object):
'''
这个类实现将爬取微博第一条内容
'''
def __init__(self):
self.url = 'http://weibo.cn/u/xxxxxxx' #请输入准备抓取的微博地址
self.url_login = 'https://login.weibo.cn/login/'
self.new_url = self.url_login def getSource(self):
html = requests.get(self.url).content
return html def getData(self,html):
selector = etree.HTML(html)
password = selector.xpath('//input[@type="password"]/@name')[0]
vk = selector.xpath('//input[@name="vk"]/@value')[0]
action = selector.xpath('//form[@method="post"]/@action')[0]
self.new_url = self.url_login + action
data = {
'mobile' : 'xxxxx@xxx.com',
password : 'xxxxxx',
'remember' : 'on',
'backURL' : 'http://weibo.cn/u/xxxxxx', #此处请修改为微博地址
'backTitle' : u'微博',
'tryCount' : '',
'vk' : vk,
'submit' : u'登录'
}
return data def getContent(self,data):
newhtml = requests.post(self.new_url,data=data).content
new_selector = etree.HTML(newhtml)
content = new_selector.xpath('//span[@class="ctt"]')
newcontent = unicode(content[2].xpath('string(.)')).replace('http://','')
sendtime = new_selector.xpath('//span[@class="ct"]/text()')[0]
sendtext = newcontent + sendtime
return sendtext def tosave(self,text):
f= open('weibo.txt','a')
f.write(text + '\n')
f.close() def tocheck(self,data):
if not os.path.exists('weibo.txt'):
return True
else:
f = open('weibo.txt', 'r')
existweibo = f.readlines()
if data + '\n' in existweibo:
return False
else:
return True if __name__ == '__main__':
mailto_list=['xxxxx@qq.com'] #此处填写接收邮件的邮箱
helper = xxoohelper()
while True:
source = helper.getSource()
data = helper.getData(source)
content = helper.getContent(data)
if helper.tocheck(content):
if mailhelper().send_mail(mailto_list,u"女神更新啦",content):
print u"发送成功"
else:
print u"发送失败"
helper.tosave(content)
print content
else:
print u'pass'
time.sleep(30)

追女神助手v0.1的更多相关文章

  1. 像追女神一样学好java~

    写在前面的话 ● 本文适合食用的观众大老爷和小建议: ----本文内容主要是围绕java这门语言展开~ 适合的食用的大老爷们: ★ 第一类:完全没学过其他编程语言入门java的小白 ★ 第二类:已经学 ...

  2. Python实现 QQ 半自动发送情话,我追到了女神

    之前追女神时候用的情话发送脚本,每次工作日上班开启电脑,就会唤醒QQ,然后发送一条情话给女神,自动唤醒QQ复制情话,不用担心遗忘,现在整理分享一下,妈妈再也不用担心我找不到对象了. 效果图: 很多人学 ...

  3. Markdown 图片助手-MarkdownPicPicker

    title: Markdown 图片助手 v0.1 toc: true comments: true date: 2016-06-04 16:40:06 tags: [Python, Markdown ...

  4. 不花钱~Python制作视频解析免费追剧神器

    同学们在闲暇之余是否喜欢看电影或者电视剧呢? 今天带领大家使用python制作能免费追剧的桌面软件.还在等什么?发车了! 效果我就不再这里演示了https://jq.qq.com/?_wv=1027& ...

  5. Mac OS X 懒人版安装教程(之前的图全部挂了,所以重发了)

    请版主把我之前发的那个帖子删了!因为所有的图全部挂了,所以麻烦版主了…… 安装中出现五国的话就请进入这里看看是那里的错误http://bbs.pcbeta.com/viewthread-863656- ...

  6. 普通pc电脑安装苹果系统mac_详细教程(精)附带所有工具下载

    苹果操作系统只允许在苹果电脑上面安装和使用.和Windows不一样,要在PC上安装,需要一系列的模拟和破解.破解安装的过程很繁琐而具有挑战性,以下是安装10A432雪豹的PC安装指南,附带25张图片帮 ...

  7. socket+网路编程

    1.网络编程: 通过某种计算机语言来实现不同设备间的资源共享和信息传递.计算机网络的创造可能比计算机本身意义更重大!!!(否则,你只能玩单机版游戏 OSI模型 OSI模型定义了不同计算机互联的标准,是 ...

  8. UOJ #78 二分图最大匹配

    #78. 二分图最大匹配 从前一个和谐的班级,有 nl 个是男生,有 nr 个是女生.编号分别为 1,…,nl 和 1,…,nr. 有若干个这样的条件:第 v 个男生和第 u 个女生愿意结为配偶. 请 ...

  9. Windows8和MacOS10.9双系统安装及Mac经常使用软件安装--联想E49A

    前提 本篇内容所描写叙述的内容仅仅适合联想E49A笔记本,经过本篇的内容之后,对于Mac OS 10.9的使用达到正常工作使用的标准,完美度已经比較好了. 结果例如以下:显卡.网卡(RTL8168). ...

随机推荐

  1. poj 1562 dfs

    http://poj.org/problem?id=1562 #include<iostream> using namespace std; ,m=,sum=; ][]; ][]={-,, ...

  2. linux系统磁盘空间满了怎么办看完这篇文章之后就知道怎么解决了

    废话不多说直接上图 可以看得到 / 下面已使用100%,已经没有剩余空间可以使用了,上面跑的服务已经访问不了了. 接下来我就看看有没有垃圾文件可以清理的 du -sh * 由于这个机器比较特殊,上面有 ...

  3. 如何使用一次for循环得到数组中第二大的数和第三大的数

    装载声明:http://blog.csdn.net/lxsmk9059/article/details/77920206?locationNum=1&fps=1 ,,,,,,,,}; ]; ] ...

  4. 安装php扩展 ffmpeg-php

    环境: CentOS 6.5 PHP5.6 安装前php 已加载GD 模块(yum install php-gd)1.添加ffmpeg和ffmpeg-devel源 cat > /etc/yum. ...

  5. 打印十字图 JAVA 递归实现

    这个是我自己想的,头疼了一个下午,不过还好.做出来了.在网上找这道题但没有找到用递归的做法. /*递归思想实现 * 标题:打印十字图 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可 ...

  6. Linux下导入SQL文件

    导入数据库 一.首先建空数据库 格式: mysql>create database 数据库名;举例: mysql>create database abc; 二.导入数据库 方法一: 选择数 ...

  7. drbd(二):配置和使用

    本文目录:1.drbd配置文件2.创建metadata区并计算metadata区的大小3.启动drbd4.实现drbd主从同步5.数据同步和主从角色切换6.drbd脑裂后的解决办法7.drbd多卷组配 ...

  8. 2017年秋软工-领跑衫获奖感言&我最感谢的人

    啥都不说,先上幅图.获得领跑衫,开心. 一.回忆 这是我第二次来上恩师杨的软件工程,第一次是2016年春,那时候我还是本科三年级的学生.忘了第一次为啥去蹭课,印象中是我的榜样亮哥把我给忽悠过去的?我也 ...

  9. 初谈Git(本机克隆项目远程仓库)

    1. 码云注册与新建项目 注册并新建项目 2. Git安装并配置 安装 配置 3. clone项目 附:一些Git命令 git clone 拷贝并跟踪远程的master分支 git add 跟踪新文件 ...

  10. 20145237 《Java程序设计》第七周学习总结

    20145237 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章   一.认识时间与日期   1.时间的度量   在正式认识Java提供了哪些时间处理API之前,得先来了解 ...