Pythonを使ったメールアドレスのスクレイピング - 究極のガイド2024

パイソン, スクレイピング, 12月 -1320225分で読める

見込み客のEメールリストを所有することは、マーケティング担当者がビジネスを拡大するのに役立ちます。Pythonスクリプトを使用してメールアドレスをスクレイピングすることで、ビジネスパーソンはオーディエンスに対してより良いアウトリーチを行うことができる。 MailButler.ioによると、世界には約43億人のメールユーザーがおり、2025年には46億人に達すると推定されている。この統計によると、人々は

見込み客のEメールリストを所有することは、マーケティング担当者がビジネスを拡大するのに役立ちます。Pythonスクリプトを使用してメールアドレスをスクレイピングすることで、ビジネスパーソンはオーディエンスに対してより良いアウトリーチを行うことができます。 

MailButler.ioによると、全世界のEメールユーザーは約43億人で、2025年には46億人に達すると推定されている。これらの統計によると、人々は公式のコミュニケーション手段として、Eメールプラットフォームに依存している。この記事では、python言語を使ってメールアドレスをスクレイピングする方法を説明します。 

目次

Pythonを使ったメールアドレスのスクレイピング

良い顧客を持つための最も簡単な方法の一つは、できるだけ多くのビジネスメールアドレスを持ち、彼らにあなたのサービスの詳細を何度も送信することです。インターネット上には、これらのサービスを無料で提供するスクレイピング・ツールが数多く存在するが、データ引き出しの制限がある。彼らはまた、無制限のデータ抽出制限を提供していますが、それらは有料です。自分の手で構築できるのに、なぜ有料なのか?それでは、Pythonを使った質の高いスクレイピング・ツールの構築手順について説明しよう。 

関連記事

最高のPythonウェブスクレイピングツール 

Pythonでプロキシを作成する方法

メールアドレスをスクレイピングする手順

初心者の方にはとても簡単な例になりますが、特にウェブスクレイピングに慣れていない方には勉強になることでしょう。これはステップバイステップのチュートリアルで、制限なくメールアドレスを取得するのに役立ちます。インテリジェントなウェブスクレイパーの構築プロセスから始めましょう。

ステップ1:モジュールのインポート

今回のプロジェクトでは、以下の6つのモジュールを使用する。

インポート
インポートリクエスト
fromurllib.parseimporturlsplit
fromcollectionsimportdeque
frombs4importBeautifulSoup
importpandasaspd
fromgoogle.colabimportfiles

インポートされたモジュールの詳細は以下の通り:

reは正規表現によるマッチングを行う。requestsはHTTPリクエストを送信する。urlsplitはURLを構成要素に分割する。dequeはリストの形をしたコンテナで、両端への追加やポッピングに使用される。BeautifulSoupはさまざまなウェブページのHTMLファイルからデータを引き出す。

ステップ2:変数の初期化

このステップでは、スクレイピングされたURL、スクレイピングされていないURL、ウェブサイトからスクレイピングに成功したメールの保存セットを保存するdequeを初期化する。

# 入力からurlを読み込む
original_url= input("ウェブサイトのURLを入力してください: ") 
 
# スクレイピングするurlを保存する
unscraped= deque([original_url])
 
# スクレイピングされたURLを保存する
scraped= set()
 
# 取得したEメールを保存する
emails= set()  

セット内では要素の重複は許されないので、すべて一意である。

ステップ3:スクレイピング・プロセスの開始

最初のステップは、スクレイピングされたURLとスクレイピングされていないURLを区別することだ。これを行うには、URLをスクレイピングされていないものからスクレイピングされたものに移動させる。

whilelen(unscraped):
    # unsraped_urlをscraped_urlsセットに移動する
    url = unscraped.popleft() # popleft():dequeの左側から 要素を取り除いて返す
    scraped.add(url)

次のステップは、URLの異なる部分からデータを抽出することである。そのためにurlsplitを使う。

parts =urlsplit(url)

urlsplit() は5つのタプルを返す: (アドレス指定スキーム、ネットワークロケーション、パス、クエリ、フラグメント、識別子)。

機密保持のため、urlsplit()の入力と出力のサンプルを表示することはできませんが、一度試してみると、コードは何らかの値(ウェブサイトのアドレス)を入力するよう求めてきます。出力にはSplitResult()が表示され、SplitResult()の中には5つの属性があります。

これでウェブサイトのURLのベースとパス部分を取得できる。

base_url = "{0.scheme}://{0.netloc}".format(parts)
    if '/' in parts.path:
      path = url[:url.rfind('/')+1]
    else:
      path = url

これは、ウェブサイトにHTTP GETリクエストを送信する時間である。

を試す:
        response = requests.get(url)
    except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
        # エラーのあるページは無視し、 次の urlで 続ける
       続ける

Eメールアドレスを抽出するために正規表現を使用し、Eメールセットに追加します。

# 必要に応じて正規表現を編集してもよい
    new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com", 
                 response.text, re.I))# re.I: (大文字小文字を無視)
    email.update(new_emails)

正規表現は、自分の好きな情報を抽出したいときに大いに役立つ。正規表現に慣れていない場合は、Python RegExを参照してください。

次のステップは、ウェブサイトにリンクされているすべてのURLを見つけることだ。

# htmlドキュメントのための美しいスープを作成する
   soup= BeautifulSoup(response.text,'lxml')

The <a href=””> tag indicates a hyperlink that can be used to find all the linked URLs in the document.

for anchor insoup.find_all("a"): 
        
       # アンカーからリンクされたURLを抽出する
        if"href" in anchor.attrs:
          link =anchor.attrs["href"] です。
        else:
          link = ''
        
       # 相対リンクを解決する(/で始まる)
        if link.startswith('/'):
            link = base_url + link
            
        elif not link.startswith('http'):
            リンク = パス + リンク

そして、新しいURLを見つけて、スクレイピング済みにもスクレイピング解除にもなければ、スクレイピング解除のキューに追加する。

このコードを自分で試してみると、すべてのリンクがスクレイピングできるわけではないことに気づくだろう、

if not link.endswith(".gz"):
         unscrapedに linkが なく 、かつ scrapedに linkが ない 場合:
              unscraped.append(リンク)

ステップ4:メールをCSVファイルにエクスポートする

より良い方法で結果を分析するために、メールをCSVファイルにエクスポートします。

df = pd.DataFrame(emails,columns=["Email"]) # お好みのカラム 名に置き換える
df.to_csv('email.csv',index=False)

Google Colabをお使いの場合は、次の方法でファイルをローカルマシンにダウンロードできます。

fromgoogle.colab importfiles
files.download("email.csv")

すでに説明したように、機密保持の問題から、スクラップされたメールアドレスを示すことはできない。 

[免責事項!一部のウェブサイトはウェブスクレイピングを許可しておらず、あなたのIPを永久にブロックする非常に賢いボットを持っています。]

完全なコード

import re
import requests
from urllib.parse import urlsplit
from collections import deque
from bs4 import BeautifulSoup
import pandas as pd
from google.colab import files
 
# read url from input
original_url = input("Enter the website url: ") 
 
# to save urls to be scraped
unscraped = deque([original_url])
 
# to save scraped urls
scraped = set()
 
# to save fetched emails
emails = set()  
 
while len(unscraped):
    url = unscraped.popleft()  
    scraped.add(url)
 
    parts = urlsplit(url)
        
    base_url = "{0.scheme}://{0.netloc}".format(parts)
    if '/' in parts.path:
      path = url[:url.rfind('/')+1]
    else:
      path = url
 
    print("Crawling URL %s" % url)
    try:
        response = requests.get(url)
    except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
        continue
 
    new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com", response.text, re.I))
    emails.update(new_emails) 
 
    soup = BeautifulSoup(response.text, 'lxml')
 
    for anchor in soup.find_all("a"):
      if "href" in anchor.attrs:
        link = anchor.attrs["href"]
      else:
        link = ''
 
        if link.startswith('/'):
            link = base_url + link
        
        elif not link.startswith('http'):
            link = path + link

メールアドレスのスクレイピングにおけるプロキシ

企業はコンタクトリストを作成するために多数のメールアドレスを必要とするため、複数のソースからデータを収集する必要があります。手作業によるデータ収集プロセスは、面倒で時間がかかるかもしれない。この場合、スクレイパーは通常、プロセスをスピードアップし、彼らの方法で来る制限を回避するためにプロキシを使用します。Proxyscrape 、無制限のデータをスクレイピングすることができ、中断のない機能を確保するために24時間365日動作する高帯域幅のプロキシを提供しています。プロキシの匿名性レベルは、スクレイパーの身元を隠すのに十分高いです。 

よくある質問

1.なぜメールアドレスのスクレイピングが必要なのですか?

適格なEメールアドレスを含む潜在的なコンタクトリストを作成することで、ターゲットとなるオーディエンスへのアプローチが容易になります。ほとんどの人がコミュニケーション媒体としてEメールを使用しているため、Eメールアドレスを通じて彼らにアプローチするのは非常に簡単です。 

2.メールアドレスのスクレイピングにプロキシは必要ですか?

複数のソースからメールアドレスをスクレイピングする際、スクレイパーはIPブロックや地理的な障壁などの課題に直面することがある。このような場合、プロキシはユーザーのアドレスをプロキシアドレスで隠し、ブロックされたウェブサイトへのアクセスブロックを取り除きます。 

3.メールアドレスのスクレイピングは合法ですか? 

公開されているデータを収集することは常に合法である。そのため、スクレイパーは収集するデータがパブリックドメインで利用可能であることを確認しなければならない。そうでない場合は、事前に許可を得てデータを収集し、スクレイピングの合法性を維持することができる。 

まとめ

この記事では、電子メールアドレスのスクレイピングの実用的な例を示すことで、ウェブスクレイピングのもう一つの不思議について探求した。私たちはPythonを使ってウェブクローラーを作成することで最もインテリジェントなアプローチを試みました。ウェブスクレイピングは、要件を考慮して適切に行えば、大きな助けになります。私たちはメールアドレスをスクレイピングするための非常にシンプルなコードを書きましたが、それは完全に無料であり、また、このために他のサービスに依存する必要はありません。また、他のサービスに頼る必要もありません。コードをできるだけシンプルにし、カスタマイズの余地も加えました。 

スクレイピング・プロジェクトで使用するプロキシ・サービスをお探しなら、ProxyScrape 住宅用プロキシとプレミアム・プロキシをお忘れなく。