2017-04-17 55 views
0

我是新來的Python和我寫這個測試代碼練習的目的,爲了找到和各種網頁打印的電子郵件地址:Python的 - 打印第二個參數

def FindEmails(*urls): 
    for i in urls: 
     totalemails = [] 
     req = urllib2.Request(i) 
     aResp = urllib2.urlopen(req) 
     webpage = aResp.read() 
     patt1 = '(\w+[-\w]\[email protected]\w+[.]\w+[.\w+]\w+)' 
     patt2 = '(\w+[\w]\[email protected]\w+[.]\w+)' 
     regexlist = [patt1,patt2] 
     for regex in regexlist: 
      match = re.search(regex,webpage) 
      if match: 
       totalemails.append(match.group()) 
       break 
    #return totalemails 
    print "Mails from webpages are: %s " % totalemails 

if __name__== "__main__": 
    FindEmails('https://www.urltest1.com', 'https://www.urltest2.com') 

當我運行,它只打印一個參數。 我的目標是打印從網頁獲取的電子郵件並將其存儲在列表中,並用逗號分隔。

在此先感謝。

回答

0

這裏的問題是行:totalemails = []。在此,您將重新實例化變量totalemails以使其具有零個條目。所以,在每次迭代中,它只有一個條目。在最後一次迭代之後,您將最終得到列表中的最後一個條目。要獲取所有電子郵件的列表,您需要將該變量放在for循環之外。 例如:

def FindEmails(*urls): 
    totalemails = [] 
    for i in urls: 
     req = urllib2.Request(i) 
     .... 
+0

解決我的問題的一個細節!非常感謝r3ign和stackoverflow! – VorX

+0

@VorX請關閉問題並將答案標記爲已接受,如果它解決了您的問題。 – r3ign