python获取CSDN个人收藏的文章链接和标题,然后发送到指定邮件

来源:互联网 发布:乌鸦森林之谜 mac 编辑:程序博客网 时间:2024/04/19 14:12

后话:今天运行这个程序的时候无法运行了,看了页面之后,发现网页的一些属性改了,所以大家如果直接复制了,还得改改:2014-04-22

# -*- coding: utf-8 -*-

"""

Created on Mon Apr 14 14:25:06 2014


@author: lifeix

"""


from HTMLParser import HTMLParser


import urllib2

import urllib

import cookielib

import smtplib

from email.mime.text import MIMEText


class favorite(HTMLParser):

links = []

def __init__(self):

HTMLParser.__init__(self)

self.isFavList = False

self.temp = {}

self.isTime = False

self.isTitle = False

self.isLink = False


def handle_starttag(self,tag, attrs):

if tag == 'div':

for key, value in attrs:

if key == 'class' and value == 'fav_list':

self.isFavList = True

break

elif tag == 'span' and self.isFavList:

for key, value in attrs:

if key == 'class' and value == 'time':

self.isTime = True

break

elif key == 'class' and value == 'title':

self.isTitle = True

break

elif tag == 'a' and self.isTitle:

self.isLink = True

for key, value in attrs:

if key == 'href':

self.temp['href'] = value

break

def handle_endtag(self, tag):

pass

def handle_data(self,data):

if self.isTime:

self.temp['time'] = data

self.isTime = False

elif self.isLink:

self.temp['aValue'] = data

self.isTitle = False

self.isLink = False

favorite.links.append(self.temp);

self.temp = {}


@staticmethod

def sendEmail(flag):

if flag == False:

print favorite.links

return

#接收邮箱

mail_to="xxxx@xxx"

content = ""

for result in favorite.links:

content += "<a href='" + str(result['href']) + "'> " + str(result['aValue']) + "</a> " + result['time'] + "\n"

mail_host="smtp.163.com"

#发送邮箱

mail_user="xxxxx"

#发送邮箱密码

mail_pass="xxxxxx"

mail_postfix="163.com"

me=mail_user+"<"+mail_user+"@"+mail_postfix+">"

msg = MIMEText(content)

msg['Subject'] = "ceshi"

msg['From'] = me

msg['To'] = mail_to

try:

s = smtplib.SMTP()

s.connect(mail_host)

s.login(mail_user,mail_pass)

s.sendmail(me, mail_to, msg.as_string())

s.close()

print 'success'

except Exception, e:

print '2'

print str(e)

f = favorite()

cj = cookielib.LWPCookieJar()

cookie_support=urllib2.HTTPCookieProcessor(cj)

opener=urllib2.build_opener(cookie_support,urllib2.HTTPHandler)

urllib2.install_opener(opener)

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',

'Referer' : ' http://my.csdn.net/my/favorite'}

#填写自己的u和p

loginUrl = 'http://passport.csdn.net/ajax/accounthandler.ashx?t=log&u=xxxxx&p=xxxxxx&remember=0&f=http%3A%2F%2Fmy.csdn.net%2Fmy%2Ffavorite&rand=0.07206512681810118'

req = urllib2.Request(loginUrl,headers=headers)

conn = urllib2.urlopen(req)

#通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程

request = urllib2.Request('http://my.csdn.net/my/favorite')

response = urllib2.urlopen(request)

text = response.read()

#print text

f.feed(text)

f.sendEmail(True)

0 0