PythonでWebスクレイピング!主要ライブラリ6選の特徴と使い方を徹底解説
Webスクレイピングとは
コンピュータサイエンスにおけるWebスクレイピング(Web Scraping)とは、Webサイトからデータを抽出する技術のことです。この手法を活用することで、Web上に散在する非構造化データを、分析や加工がしやすい構造化データへと変換できます。
Python 3でよく使われる代表的なスクレイピングツールは以下の6つです。
- Urllib(urllib.request)
- Requests
- BeautifulSoup
- Lxml
- Selenium
- MechanicalSoup
1. Urllib(urllib.request)
UrllibはPythonに標準で組み込まれているモジュールのため、追加インストールなしですぐに使えます。URLを扱うための機能を備えており、urlopen() 関数を使えば、HTTPやFTPなどさまざまなプロトコル経由でURLの内容を取得できます。
サンプルコード
from urllib.request import urlopen
my_html = urlopen("https://www.tutorialspoint.com/")
print(my_html.read())
実行すると、指定したURLのHTMLソース全体がバイト文字列として出力されます。
2. Requests
Requestsは標準ライブラリではないため、pipでインストールが必要です。HTTP/1.1準拠のリクエストを非常にシンプルなコードで送信できる、Pythonの定番HTTPクライアントです。
pip install requests
サンプルコード
import requests
# URLを取得
my_req = requests.get('https://www.tutorialspoint.com/')
print(my_req.encoding)
print(my_req.status_code)
print(my_req.elapsed)
print(my_req.url)
print(my_req.history)
print(my_req.headers['Content-Type'])
実行結果
UTF-8
200
0:00:00.205727
https://www.tutorialspoint.com/
[]
text/html; charset=UTF-8
ステータスコード「200」はリクエストの成功を意味し、elapsed にはレスポンスまでにかかった時間が表示されます。
3. BeautifulSoup
BeautifulSoupはHTMLやXMLを解析(パース)するためのライブラリです。解析結果のパースツリーを構築し、そこからHTMLページ内の目的のデータを簡単に抽出できます。デフォルトのパーサとしてPython標準ライブラリも利用可能です。
pip install beautifulsoup4
サンプルコード
from bs4 import BeautifulSoup
import requests
# URLを取得
my_req = requests.get("https://www.tutorialspoint.com/")
my_data = my_req.text
my_soup = BeautifulSoup(my_data)
for my_link in my_soup.find_all('a'):
print(my_link.get('href'))
実行結果
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/questions/index.php
https://www.tutorialspoint.com/online_dev_tools.htm
...(ページ内の全リンクURLが出力される)
この例では、ページ内のすべての <a> タグを走査し、href属性(リンク先URL)を一括で抽出しています。
4. Lxml
Lxmlは高性能かつ実運用レベルの品質を持つHTML/XML解析ライブラリです。処理速度と解析精度が重視される場合に最適で、豊富なモジュールを通じて柔軟にデータ抽出を行えます。
pip install lxml
サンプルコード
from lxml import etree
my_root_elem = etree.Element('html')
etree.SubElement(my_root_elem, 'head')
etree.SubElement(my_root_elem, 'title')
etree.SubElement(my_root_elem, 'body')
print(etree.tostring(my_root_elem, pretty_print=True).decode("utf-8"))
実行結果
<html>
<head/>
<title/>
<body/>
</html>
5. Selenium
Seleniumはブラウザ操作を自動化するツールで、「WebDriver」と呼ばれることもあります。ボタンのクリック後やページのスクロール時など、JavaScriptによる描画の完了を待つ必要がある動的なページの操作において、Seleniumは特に威力を発揮します。
pip install selenium
サンプルコード
from selenium import webdriver
my_path_to_chromedriver = '/Users/Admin/Desktop/chromedriver'
my_browser = webdriver.Chrome(executable_path=my_path_to_chromedriver)
my_url = 'https://www.tutorialspoint.com/'
my_browser.get(my_url)
このコードを実行するとChromeが起動し、指定したURLのページが自動的に表示されます。
6. MechanicalSoup
MechanicalSoupは、Webサイトとの対話を自動化するためのPythonライブラリです。Cookieの保存・送信、リダイレクトの追跡、リンクの巡回、フォームの送信などを自動的に実行できます。ただし、JavaScriptの実行には対応していない点に注意しましょう。
pip install MechanicalSoup
サンプルコード
import mechanicalsoup
my_browser = mechanicalsoup.StatefulBrowser()
my_value = my_browser.open("https://www.tutorialspoint.com/")
print(my_value)
my_val = my_browser.get_url()
print(my_val)
my_va = my_browser.follow_link("forms")
print(my_va)
my_value1 = my_browser.get_url()
print(my_value1)
まとめ:用途別の使い分けがカギ
Webスクレイピングでは、目的に応じたツールの使い分けが重要です。シンプルなHTTP通信にはRequests、HTMLの解析にはBeautifulSoupやLxml、JavaScriptを伴う動的ページにはSelenium、フォーム操作の自動化にはMechanicalSoupが適しています。これらを組み合わせることで、効率的かつ堅牢なスクレイピング処理を構築できます。
-
31 の最高の Web スクレイピング ツール
コーディングに慣れていない人にとって、Web スクレイパーを作成するのは難しいかもしれません。幸いなことに、Web スクレイピング ソフトウェアは、プログラマーと非プログラマーの両方が利用できます。 Web スクレイピング ソフトウェアは、Web サイトから関連データを取得するために特別に設計されたソフトウェアです。これらのツールは、何らかの方法でインターネットからデータを取得したい人にとって有益です。この情報は、コンピューター上のローカル ファイルまたはデータベースに記録されます。 Web用のデータを自律的に収集する技術です。 31 の最高の無料 Web スクレイピング ツールのリストを紹介
-
プロフェッショナル向けWebデザインツールおすすめ6選|特徴と料金を徹底解説
市場には有料・無料を問わず、プロフェッショナル向けのWebデザインツールが数多く存在します。これらのツールは、デザイナーの作業を効率化し、手間を大幅に削減してくれる頼もしい相棒となる存在です。 HTMLやC++、JavaScriptといったプログラミング言語がWebサイト制作において重要な役割を果たす一方で、デザインツールはサイトに洗練された仕上がりと印象的な外観を与えるために欠かせません。本記事では、オンラインで利用できる優れたWebデザインツールを厳選してご紹介します。 プロが使うべきおすすめWebデザインツール 1) Canva インフォグラフィックの手軽さがお好みなら、Canvaは最