Python - ウェブスクレイピング - BeautifulSoup

 クラウディア
1. 概要
2. インストール
3. 書いてみる

1. 概要

 あるサイトで
日本気象協会 tenki.jp【公式】 / 天気・地震・台風
「日本気象協会 tenki.jp【公式】 / 天気・地震・台風」

 こんなんから、枠内の地域名のみを取得したいという課題がありましてな・・・。

 「BeautifulSoup」ちゅうのを使うのがいいらしい。

 「Beautiful」と自分で言うちょるんじゃから、ええんじゃろう。

2. インストール

 「FreeBSD」に「ports」でインストールできそうです。

$ whereis py-beautifulsoup
py-beautifulsoup: /usr/ports/www/py-beautifulsoup
 インストールします。

cd /usr/ports/www/py-beautifulsoup
make
make install
 オプションは、「DOC」のみです。

3. 書いてみる

 課題を書いてみます。
from urllib import request
from bs4 import BeautifulSoup

html = request.urlopen('https://tenki.jp/')
soup = BeautifulSoup(html, "html.parser")
names = soup.select(".forecast-map-entry")

for name in names:
    for span in name.find_all("span"):
        span.extract()

    print(name.getText())

 これを実行すると
札幌
釧路
仙台
新潟
東京
金沢
名古屋
大阪
高知
広島
福岡
鹿児島
那覇
 なんだか、思い通りに動いてくれました。  一応、解説しておきます(と言いつつ、実はまだ自分でよく理解していない)。  先頭の 2 行の「import」の仕方は、真似しただけなので、よくわかっていません。  4~6行は、オープンして、「BeautifulSoup」で解析、目的のものが「.forecast-map-entry」という「class」(あれ?「id」かも)に所属しているので、抽出してリストにしています。  8~12行で、リストしたものを抽出するのですが、地域名以外のものが含まれています。  「span」で囲まれているので、「span」で囲まれているものを除外すると、地域名だけが残ります。
TSUKUMOネットショップJETBOYKiPuRu
 
 
カウンタバックグラウンド