我正在编写一些代码来自动执行某些b2b电子邮件抓取工作。我有一个函数,hunter.domain_search(url),它输出一个带有列表的字典作为这样的一些键
{
'domain': 'turbotitleloan.com',
'webmail': False,
'pattern': None,
'organization': None,
'emails': [
{
'value': 'support@turbotitleloan.com',
'type': 'generic',
'confidence': 6,
'sources': [
{
'domain': 'turbotitleloan.com',
'uri': 'http://turbotitleloan.com/car-title-loans/title-loan-faqs',
'extracted_on': '2016-06-10'
},
{
'domain': 'turbotitleloan.com',
'uri': 'http://turbotitleloan.com/contact',
'extracted_on': '2016-06-10'
},
{
'domain': 'turbotitleloan.com',
'uri': 'http://turbotitleloan.com/faq',
'extracted_on': '2015-01-30'
}
],
'first_name': None,
'last_name': None,
'position': None,
'linkedin': None,
'twitter': None,
'phone_number': None
},
{
'value': 'underwriting@turbotitleloan.com',
'type': 'generic',
'confidence': 5,
'sources': [
{
'domain': 'turbotitleloan.com',
'uri': 'http://turbotitleloan.com/faq',
'extracted_on': '2016-05-02'
},
{
'domain': 'turbotitleloan.com',
'uri': 'http://turbotitleloan.com/car-title-loans/what-to-expect',
'extracted_on': '2016-06-10'
},
{
'domain': 'turbotitleloan.com',
'uri': 'http://turbotitleloan.com/car-title-loans/title-loan-faqs',
'extracted_on': '2016-06-10'
}
],
'first_name': None,
'last_name': None,
'position': None,
'linkedin': None,
'twitter': None,
'phone_number': None
}
]
}
我希望我的代码返回与键值相关联的值,这只是一系列电子邮件地址。 Urls只是一个域名列表。在这里,我认为我的问题是
for url in urls:
result=hunter.domain_search(url)
nResult=result['emails']
nResult[0]['value']
它输出一个电子邮件地址,然后我得到一个列表索引超出范围错误。我没理解为什么我遇到这个错误。每次进入循环时,它使用一个新列表,并且所有这些列表都应该有第一个元素,这是我要访问的字典存储的位置。那么为什么我的循环在第一个列表上工作,而不是在后续列表上呢?
答案 0 :(得分:1)
索引错误可能是由函数返回带有空emails
列表的结果引起的。尝试此操作以跳过没有电子邮件的条目。
for url in urls:
result=hunter.domain_search(url)
nResult=result['emails']
if nResult:
print(nResult[0]['value'])
else:
print('no emails found in', url)