2017-04-17 57 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