我是Python的新手,我为实践目的编写了这个测试代码,以便从各种网页中查找和打印电子邮件地址:
def FindEmails(*urls):
for i in urls:
totalemails = []
req = urllib2.Request(i)
aResp = urllib2.urlopen(req)
webpage = aResp.read()
patt1 = '(\w+[-\w]\w+@\w+[.]\w+[.\w+]\w+)'
patt2 = '(\w+[\w]\w+@\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 :(得分:1)
这里的问题是:totalemails = []
。在这里,您将重新实例化变量totalemails
以使条目为零。因此,在每次迭代中,它内部只有一个条目。在最后一次迭代之后,您将最终得到列表中的最后一个条目。要获取所有电子邮件的列表,您需要将变量放在for
循环之外。
例如:
def FindEmails(*urls):
totalemails = []
for i in urls:
req = urllib2.Request(i)
....