【初学者向け】Python 基礎4 Yahooから全てのリンクを一覧化(BeautifulSoup)


これまで

・【初学者向け】Python 基礎1 関数定義と呼び出し
・【初学者向け】Python 基礎2 ブロックとfor文if文
・【初学者向け】Python 基礎3 pipによるサードパーティーモジュールのインストール方法

間違いやもっと良い方法などありましたらご指摘頂けると嬉しいです。

▽環境
Python 3.6.4

内容

BeautifulSoupのインストール

HTMLやXMLなどが解析できるBeautifulSoupを使います。(ビューティフルスープ。という読み方でいいのか)

pip install beautifulsoup4

withについて

withを使うとファイル読み込み時の可読性が向上する。
今回はURLからHTMLファイルを読み込む際に使用。
withについてはここが詳しい

さあ実行

getlink.py
from bs4 import BeautifulSoup
# ファイル読み込みの為、urllibを使用
import urllib.request as req

url = "https://www.yahoo.co.jp/"

# urlopen(url)が成功したらread以降を実行
with req.urlopen(url) as f:
    # あくまでwww.yahoo.co.jpはURLなのでurlopenからのreadでhtmlを読み込む
    res = f.read()
    # HTML形式として解析
    soup = BeautifulSoup(res, 'html.parser')
    # <a>を全て取得
    links = soup.find_all("a")
    # 取得した情報分繰り返す
    for a  in links:
        # attrsに保持しているhref情報を取得
        href = a.attrs['href']
        # <a>のtitleを取得
        text = a.string
        # 出力
        print(text,">>",href)
結果
ヘルプ >> https://www.yahoo-help.jp/
ニュース >> https://news.yahoo.co.jp/
天気 >> https://weather.yahoo.co.jp/weather/
スポーツナビ >> https://sports.yahoo.co.jp/
ファイナンス >> https://finance.yahoo.co.jp/
テレビ >> https://tv.yahoo.co.jp/
GYAO! >> https://gyao.yahoo.co.jp/
ゲーム >> https://games.yahoo.co.jp/
Yahoo!モバゲー >> http://yahoo-mbga.jp/?_ref=aff%3Dysm001
地図 >> https://map.yahoo.co.jp/
路線 >> https://transit.yahoo.co.jp/
   ~
会社概要 >> https://about.yahoo.co.jp/
投資家情報 >> https://about.yahoo.co.jp/ir/
社会的責任 >> https://about.yahoo.co.jp/csr/
企業行動憲章 >> https://about.yahoo.co.jp/info/charter/
広告掲載について >> https://marketing.yahoo.co.jp/
採用情報 >> https://about.yahoo.co.jp/hr/
利用規約 >> https://about.yahoo.co.jp/docs/info/terms/
免責事項 >> https://about.yahoo.co.jp/docs/pr/disclaimer.html
メディアステートメント >> https://about.yahoo.co.jp/info/mediastatement/
プライバシーポリシー >> https://about.yahoo.co.jp/docs/info/terms/chapter1.html#cf2nd