Python
 Computer >> コンピューター >  >> プログラミング >> Python

BeautifulSoupを使ってWebサイトからhrefリンクを抽出する方法

BeautifulSoupは、Webページからデータを解析(パース)するために使われるPythonのサードパーティ製ライブラリです。さまざまなソースからデータを抽出・加工・活用する「Webスクレイピング」を行う際に非常に役立ちます。

Webスクレイピングは、研究目的のデータ収集だけでなく、市場トレンドの把握や比較、SEOモニタリングなど、幅広い用途で活用されています。

BeautifulSoupのインストール

Windows環境にBeautifulSoupをインストールするには、以下のコマンドを実行します。

pip install beautifulsoup4

実装例:hrefリンクの一括取得

以下は、Wikipediaのページからすべてのhrefリンクを抽出するサンプルコードです。

from bs4 import BeautifulSoup
import requests

url = "https://en.wikipedia.org/wiki/Algorithm"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")

print("The href links are :")
for link in soup.find_all('a'):
    print(link.get('href'))

出力結果

The href links are :
…
https://stats.wikimedia.org/#/en.wikipedia.org
https://foundation.wikimedia.org/wiki/Cookie_statement
https://wikimediafoundation.org/
https://www.mediawiki.org/

コードの解説

  • 必要なパッケージ(bs4とrequests)をインポートし、利用できる状態にします。
  • スクレイピング対象となるWebサイトのURLを定義します。
  • requests.get()でURLにアクセスし、ページのHTMLデータを取得します。
  • BeautifulSoup関数にHTMLとパーサー(html.parser)を渡して、解析可能なオブジェクトを生成します。
  • find_all('a')メソッドを使うことで、ページ内のすべてのアンカータグ(<a>タグ)を取得できます。
  • 各リンクからget('href')でhref属性の値を取り出し、コンソールに出力します。

このように、BeautifulSoupとrequestsを組み合わせることで、わずか数行のコードでWebページ内のリンクを簡単に抽出できます。特定の条件でリンクを絞り込みたい場合は、CSSセレクターや正規表現と組み合わせることで、さらに柔軟なデータ抽出が可能になります。

  1. WebサイトからExcelへデータを自動抽出する方法|「Webから」機能の使い方を徹底解説

    WebページからExcelワークシートへのデータの自動抽出(収集・更新)は、業務内容によっては欠かせない作業です。実はExcelには、Webページから直接データを取得できる機能が標準搭載されており、データ分析業務でExcelを活用する方にとって最も利用頻度の高い機能の一つとなっています。例えば金融アナリストであれば、分析のために毎日の株価をWebサイトからExcelブックへ取り込みたい場面があるでしょう。本記事では、WebサイトからExcelへデータを自動抽出する方法を、初心者にもわかる手順で丁寧に解説します。WebサイトからExcelへデータを自動抽出する基本手順ここでは、Excelの「デー

  2. WebサイトからExcelへデータを取り込む2つの方法|手動インポートとVBAスクレイピングを徹底解説

    World Wide Webには有用なデータが膨大に存在することは周知のとおりです。しかし、何らかの分析を行う前には、そのデータをMicrosoft Excelに取り込む必要があります。本記事では、このタスクを完了させるために使える2つの方法を詳しく解説します。 方法1:Webクエリ機能で外部データを手動取得する ここでは、興行収入ランキング上位の映画データをWebページからダウンロードするケースを例に、手順をわかりやすく紹介します。 まずMicrosoft Excelを開き、「データ」タブをクリックします。次に「外部データの取込」グループ内の「Web」をクリックしてください。「新しいWeb