使用python登陆Yahoo邮箱

def loginYahoo(username, password):	
	url0 = '''
	http://mail.yahoo.com.cn
	'''	
	response = opener.open(url0)
	data0 = response.read()
	
	done =re.search( r'(?<=(value=")).*?(?=")', re.search( r'(?<=(name=\.done)).*?(?=>)', data0 ).group()).group()
	challenge = re.search( r'(?<=(value=")).*?(?=")', re.search( r'(?<=(name="\.challenge")).*?(?=>)', data0 ).group()).group()


	url1 = '''
	http://edit.bjs.yahoo.com/config/login
	'''
	values = {
		'.intl' : 'cn',
		'.done' : "%s%s" % (done, "%26.remember%3Dy%26.persistent%3D"),
		'.src' : 'ym',
		'.cnrid' : 'ymhp_20000',
		'.challenge' : '%s' % challenge,
		'login' : '%s@yahoo.cn' % username,
		'passwd' : '%s' % password,
		'.remember' : 'y',
		'submit' : '%B5%C7%C2%BC'
	}
	
	data = urllib.urlencode(values)
	req = urllib2.Request(url1, data)
	req.add_header('Referer', 'http://mail.cn.yahoo.com/')
	response = opener.open(req)
	data2 =response.read()
	
	folder = re.search( r'(?=(showFolder)).*?(?=")', data2).group()	
	total = re.search( r'(?<=(tt=)).*', folder).group()
	num_per_page = re.search( r'(?<=(pSize=)).*?(?=&)', folder ).group()
	num_per_page = string.atoi(num_per_page)
	mod = string.atoi(total) % num_per_page
	num_times = string.atoi(total) / num_per_page
	if mod > 0 :
		num_times += 1;
	
	index = 0
	for i in xrange(num_times):
		url2 = "http://cn.mc924.mail.yahoo.com/mc/%s&startMid=%d" % (folder, i * num_per_page )
		response = opener.open(url2)
		data3 = response.read()	
		
		for match in re.finditer(r'(?<=(showMessage)).*?(?=\>)', data3):
			index += 1
			part1 = "第%d封邮件" % index
			part2 = "%s" % match.group()
			part1 = part1.decode('utf8').encode('gbk')
			subject = re.search( r'(?<=(title=")).*?(?=")', part2 ).group()
			subject = part1.decode('gbk') + "    " + subject.decode('utf8')
			print( subject.encode('gbk'))
原文地址:https://www.cnblogs.com/LinuxHunter/p/1891632.html