我正在尝试使用 urllib 和 urllib2 来检查公共用户配置文件是否存在于各种社交网络中。现在我一直在尝试检查 www.live.com。例如,如果我访问此 url http://spaces.live.com/profile.aspx?mem=Example@hotmail.com
,并且 mem 参数的电子邮件存在,它会重定向到此帐户的个人资料,http://profile.live.com/cid-f5ee5e2a441e7771/
即使个人资料不公开也是如此。否则账户不存在。
我应该如何使用 URLError (或其他)来检测重定向?有没有更好的方法呢?
编辑:
自行解决!!!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import urllib2
from urllib2 import HTTPError, URLError
nick=str(sys.argv[1])
pref_live="http://spaces.live.com/profile.aspx?mem="
suf_live_01="@hotmail.com"
try:
f = urllib2.urlopen( pref_live + nick + suf_live_01 )
print f.read()
f.close()
except HTTPError, e:
print "error"
print e.code
except URLError, e:
print "error"
print e.reason
如果错误是404,帐户存在,否则(500),它不存在
编辑2:
这是最终代码,谢谢你们的帮助:)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import urllib2
from urllib2 import HTTPError, URLError
prefix_live="http://spaces.live.com/profile.aspx?mem="
sufix_live=["@hotmail.com","@live.com"]
try:
nick=str(sys.argv[1])
except:
print "Username needed"
print "Usage:"
print sys.argv[0], "[username]"
nick=''
def checking():
for domain in sufix_live:
try:
f = urllib2.urlopen( prefix_live + nick + domain )
print f.read()
f.close()
except HTTPError, e:
if e.code == 404:
print 'Yeah! %s%s exists' % (nick, domain)
elif e.code == 500:
print 'Doh! %s%s Does NOT exists'% (nick, domain)
else:
print 'other error'
print e.code
except URLError, e:
print "There was an error"
print e.reason
if nick != '':
checking()