カタバミさんのプログラミングノート

日曜プログラマーがプログラミング関係のメモを記録するブログです。

Python 3でURLからHTMLを読み込んで要素一覧を取得する

Python 3でurllib.requestを使用してURLからHTMLを読み込み、Beautiful Soup 4とlxmlを使用して要素一覧を取得するサンプルコードです。読み込むURLはYahoo! JAPANのURLをお借りしています。

サンプルコード

import urllib.request
from bs4 import BeautifulSoup

#URLからウェブページを読み込みます。
url = "https://www.yahoo.co.jp/"
with urllib.request.urlopen(url) as response:
    doc = BeautifulSoup(response.read(), "lxml")

#TODO: ここで読み込んだウェブページを処理します。
all_elements = doc.select("*")
#print(set((element.name for element in all_elements)))
print({element.name for element in all_elements}) #セット内包記法

出力例(2020年1月22日時点)

{'font', 'input', 'img', 'nobr', 'strong', 'tr', 'head', 'center', 'br', 'link', 'body', 'html', 'style', 'td', 'area', 'a', 'tbody', 'meta', 'table', 'title', 'hr', 'map', 'form'}

参考

urllib.request --- URL を開くための拡張可能なライブラリ — Python 3.8.2 ドキュメント urllib.requestのドキュメント

http.client --- HTTP プロトコルクライアント — Python 3.8.2 ドキュメント urllib.requestの戻り値HTTPResponseオブジェクトのドキュメント

Beautiful Soup Documentation — Beautiful Soup 4.9.0 documentation Beautiful Soup 4のドキュメント