我正在嘗試使用urllib和urlib2來檢查公共用戶配置文件是否存在於各種社交網絡中。 現在我被困在試圖檢查www.live.com。 如果我訪問例如這個URL http://spaces.live.com/[email protected]
,並且存在mem參數的電子郵件,它將重定向到此帳戶的個人資料,就像這個http://profile.live.com/cid-f5ee5e2a441e7771/
即使該個人資料不公開。否則該帳戶不存在。使用python檢查多個服務中的現有帳戶
我該如何使用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()
沒有收到你自己解決它的更新。 – ashimali
謝謝!你的代碼非常簡單,儘管我可以處理多個錯誤代碼。 無論如何非常感謝你的消化,這對我很快就會有用。 – peluzza