2017-09-12 5 views
-4

私のb2b電子メールスクレイピングの一部を自動化するコードを書いています。私はこのリストのインデックスエラーが発生している理由を理解していません

{ 
    'domain': 'turbotitleloan.com', 
    'webmail': False, 
    'pattern': None, 
    'organization': None, 
    'emails': [ 
     { 
      'value': '[email protected]', 
      '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': '[email protected]', 
      '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 
     } 
    ] 
} 

のようないくつかのキーとリストと辞書を出力する関数、hunter.domain_search(URL)を、持っていると私は私のコードは、キー「値」とペアの値を返すようにしたい、ちょうどことになります一連の電子メールアドレスになります。 URLはドメイン名のリストです。私は私の問題は

for url in urls: 
    result=hunter.domain_search(url) 
    nResult=result['emails'] 
    nResult[0]['value'] 

だと思うのはここだこれは、単一の電子メールアドレスを出力し、その後、私は範囲エラーのうち、リストインデックスを取得します。私はなぜこのエラーに遭遇しているのか分からない。ループを通過するたびに、新しいリストで作業し、これらのリストはすべて、アクセスしたい辞書が格納されている最初の要素を持つ必要があります。では、なぜ私のループは最初のリストで動作し、後続のリストでは動作しませんか?

+1

'* result'は*リスト*で、あなたはそれが*文字列をインデックスにしようとしている....それは時々動作する場合、私は唯一のhunter.domain_search'は何に矛盾している'からだと仮定することができますそれが返されます。 –

答えて

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) 
関連する問題