7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

全国の水族館の情報をスクレイピングしてみた

Last updated at Posted at 2022-03-26

はじめに

私は水族館が好きで、色々とあって全国の水族館の情報をスクレイピングしてみました。今回は、その方法をまとめました。

全国の水族館の情報をスクレイピングしてみた

スクレイピングするページ

今回利用したページは以下です。一部載っていない水族館もありますが、そこは気にせず取得していきます。

上記のページに記載されている情報は転載を禁止されています。

スクレイピングの流れ

今回のゴールは、前述したページより水族館の名前、ホームページのURL、住所を取得することを試みます。前述したページには各水族館の説明があるページのリンクが記載されているだけなので、元のページから各水族館のURLを取得し、水族館の説明のページをスクレイピングしていきたいと思います。

今回はPythonを使ってスクレイピングを行います。

実際のコード

# 必要なライブラリ
import requests
from lxml import html
from bs4 import BeautifulSoup

# 水族館一覧のページのURL
url = 'http://www.web-aquarium.net/' 

# ページのHTMLを取得する
res = requests.get(url)
res.encoding = res.apparent_encoding
raw_html = res.text
soup = BeautifulSoup(raw_html, "html.parser")

# 水族館のURLリストを作成する
# aタグのみを取得して、URLを作成していく
import re
raw_aquarium_list = soup.find_all("a", href=re.compile("aquarium/aq_"))
aquarium_list_url = ['http://www.web-aquarium.net/' + data.attrs['href'] for data in raw_aquarium_list]

# 水族館の情報リストを作成する
# 元ページのHTMLを取得した時と同じ方法でHTMLを取得していく
import time
aquarium_list = []

for url in aquarium_list_url:
  res = requests.get(url)
  res.encoding = res.apparent_encoding
  raw_html = res.text
  soup = BeautifulSoup(raw_html, "html.parser")
  data = soup.find_all(id="data")
  name = soup.find(id="aqua_name").text
  if data == []:
    continue
  aquarium_list.append([name, data[1].text.replace('\n', '').replace('\t', ''), data[2].text])
  time.sleep(1)

さいごに

スクレイピングしてみると日本には水族館がたくさんあるなと思いました。今回は水族館一覧の情報をスクレイピングしてみましたが、スクレイピングするときは色々と注意することもあります。そこには注意して行いましょう。

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?