logo
languageJPdown
menu

【Pythonクローラー入門】SeleniumによるWebクローラーの開発

約5分で読めます

Webサイトから大量のデータをできるだけ早く取得する必要があるとします。それぞれのWebサイトに手動でアクセスして、コピペでデータを取得することなく、どうやって自動的にデータを取得するのでしょうか?その答えが「Webスクレイピング」です。Webスクレイピングに通じて、この作業を自動化にしてくれます。

今回はPythonでWebサイトからデータをクローニングして、CSVファイルに書き込むというようなWebクローラーを実際に作成してみましょう。

必要なPython開発環境を導入

Pythonには、プログラムを組むために便利な標準ライブラリが数多くあります。今回は、以下のライブラリを使用しています。

  • Selenium ーー ブラウザを自動的に操作するライブラリです。主にWebアプリケーションのテストやWebスクレイピングに利用されます。
  • BeautifulSoup ーー HTMLおよびXMLドキュメントを解析するためのPythonパッケージです。
  • csv ーー CSVフォーマットで保存するために使用されます。

したがって、プログラミングを実戦する前に、以下の準備が必要となります。

  • Python 2.xまたはPython 3.xの環境
  • Selenium、BeautifulSoup、csvライブラリの導入
  • Google Chrome ブラウザ

それでは、早速始めましょう!

ページ要素(HTMLドキュメント)の検証

Webサイトから、要素(HTMLドキュメント)を検証し、データがどのように構成されているかを分析する必要があります。HTML基礎知識はこちらのリンクで参照ください。今回はテーブルのデータを抽出するように試してみましょう。
Ctrl + Shift + I を押して、テーブルの要素を指定すると、HTMLのソースコードに表示されます。

したがって、テーブルの要素名は「table」と分かっています。
なお、Webクローラーを構築するたびに、HTMLドキュメント内の要素を定位するため、xPathの知識が必要となります。xPathのチュートリアルはこちらのリンクからアクセスできます。

コードを書く

1. まず、必要なライブラリをすべてインポートしましょう。
import csv # csvモジュールをインポート
from selenium import webdriver # selenium webdriver をインポート
from bs4 import BeautifulSoup # BeautifulSoup をインポート


2. Webdriverを使用する前に、chromedriverへのパスを設定する必要があります。

※/path/to/chromedriverをWebdriverのパスに変更してください。
driver = webdriver.Chrome(“/path/to/chromedriver”)


3. 以下のコードを参照してURLを開いてください。
driver.get(“http://test-sites.octoparse.com/?page_id=192”)

4. URLを開くためのコードが書けたところで、いよいよWebサイトからデータを抽出します。
先に述べたように、抽出したいデータは<table>要素に入っています。データを持つ<tr>要素を探し出し、データを抽出します。以下のコードを参照してください。

content = driver.page_source
BS = BeautifulSoup(content, “html.parser”)
table = BS.findAll(“table”, {“class”:”wp-block-table is-style-stripes”})[0] # テーブル”wp-block-table is-style-stripes”を指定
rows = table.findAll(“tr”) # テーブル中<tr>要素の内容を抽出
print(rows) # 抽出したHTMLドキュメントを検証

最後に、web-scraping.pyで保存します。

コードを実行してデータを抽出する

コードを実行して、必要なHTMLドキュメントを正しく抽出するかどうかを確認します。

データを必要なフォーマットで保存

データを抽出した後、抽出したデータをCSV(Comma Separated Value)形式で保存します。そのため、コードに以下の内容を追加します。

with open(“web-scraping.csv”, “w”, encoding=’utf-8′, newline=””) as file: # ファイル名は「web-scraping.csv」を指定する
    writer = csv.writer(file)
    for row in rows:
        csvRow = []
        for cell in row.findAll([‘td’, ‘th’]): # tdとth要素をループでファイルに書き込む
            csvRow.append(cell.get_text())
        writer.writerow(csvRow)

Pythonでスクレイピングしましょう

それは最終的なコードです。

追加した後、もう一度コード全体を実行してみてください。
抽出結果は「web-scraping.csv」というファイル名が作成され、このファイルに抽出されたデータが格納されます。

Octoparseでスクレイピングする方法

プログラミングが苦手、或いは英語のコードばかりなので苦手意識を持っている方は、スクレイピングツールのOctoparseはおすすめします。

Octoparseは「自動識別」機能があるので、ページのURLを入力するだけで、Webページ上各項目のデータ(テキストとリンクを含む)、「次のページ」ボタン、「もっと見る」ボタン、およびページのスクロールダウンを自動的に検出し、タスク(Webクローラー)を自動的に生成することができます。

早速ですが、Octoparseで自動化の魅力を体験してみましょう。

1. Octoparseを起動して、スクレイピングしたいWebページのURLを入力します。
「抽出開始」 ボタンをクリックして進みます。

2. Octoparseでページが読み込みされたら、自動的にページ上の内容を識別します。
自動識別とは、自動的にページ上の必要なデータを検出して識別するという役立つ機能です。ポイント&クリックをする必要はなく、Octoparseは自動的に処理します。

3. 識別が完了すると、データプレビューで識別したデータを表示され、確認してから「ワークフローの生成」ボタンを押します。

4. これで簡単にWebクローラーが作成しました!
上の「実行」ボタンをクリックして、すぐデータを抽出できます。簡単ではないでしょうか。

まとめ

Pythonでスクレイピングはそんなに簡単ではないので、学ぶ時間がなく、効率的にスクレイピングがしたい、プログラミングが苦手、或いは英語のコードばかりなので苦手意識を持っている方はスクレイピングツールはおすすめです。

人気記事

トピックを検索する

今すぐOctoparseを始めて、業務効率化を実現しましょう。

ダウンロード

関連記事

  • avatarTakahashi
    「Webスクレイピングツールを自分でゼロから構築したい」こうしたニーズが近年急増しています。Webスクレイピングツールは、インターネットの情報を収集・保存・分析に役立ちます。そのWebスクレイピングツールで、重要な役目を持つのが「Webクローラー」です。本記事ではプログラミング初心者の方でも、かんたんに作れるWebクローラーの構築方法について解説します。実際に構築をしなくても、Webクローラーの仕組みを理解することは、ITリテラシーを高める上でとても大切です。ぜひ参考にしてみてください。
    2024.02.21 · 7 min read
  • avatarTakahashi
    Webスクレイピングを行う上で、重要な役割を担うのが「XPath」です。しかし、XPathについて正しく理解できていない方も多いでしょう。そこで今回はXPathについて、基本から書き方までわかりやすく解説します。それ以外に、XPathでスクレイピングする手順とXPathを取得する方法についてもご説明します。
    2023.12.07 · 7 min read
  • avatarMurata
    Webスクレイピングを実行していると、403エラーが表示されて、データの抽出ができないことがあります。403エラーには、さまざまな原因があります。この記事では、Webスクレイピングの初心者の方に向けて、403エラーの原因や403エラーの解決策を解説します。
    2023.02.13 · 7 min read
  • avatarTakahashi
    ビッグデータは、市場動向、顧客の好み、競合他社の分析に関連した情報を提供します。今やWebスクレイピングは、単にデータを収集するだけでなく、企業のマーケティング活動において必要不可欠と言ってもよいでしょう。ただし、Webスクレイピングプロセスをスケールアップすると、ブロッキングメカニズムなどの多くの課題が発生し、データを取得できなくなる可能性があります。ここではWebスクレイピングが抱える8つの課題と解決方法を紹介します。
    2023.02.06 · 7 min read