PythonでWebスクレイピングをおこなう方法
Webスクレイピングと聞くと、なにか意味をそのまま解釈してしまい、webを掘るというイメージが湧いてしまうかもしれません。しかし実際はスクレイピングとは「情報を取得する」ことをいいます。この記事はスクレイピングの書籍を一通り読み進め書いているもので、もしかすると想像していた内容と違うということがあるかもしれません。私自身もまだ完全に理解していない部分があります。
BeautifulSoupモジュールのインストール方法
BeautifulSoupモジュールをインストールするには、次のコマンドをコマンドプロンプトに入力します↓
pip install beautifulsoup4
「4」の部分はバージョンです将来的にはこの数字が変わっている可能性もあります。一応以下のサイトでもインストールコマンドは確認できます。
BeautiflSoup使い方
BeautifulSoup()関数は、HTMLファイルもしくはWebページのURLを渡すと、Beautifulオブジェクトを生成します。
select()関数の使い方
Beautifulオブジェクトに対してselect()関数を用いることで、Webページから任意の要素を取得できます。
select()関数は要素を含むリスト(リスト型オブジェクト)を返します。getText()関数にテキストコンテンツを取得したいHTMLタグオブジェクトを渡すと、そのタグの文字列を取得できます。 またattrsを使うことでhtmlタグの属性を取得することができます。
実際のコード例
WEBページをBeautifulSoup()関数の引数に渡す場合
import requests, bs4 res = requests.get('http://nostarch.com') res.raise_for_status() example_soup = bs4.BeautifulSoup(res.text, 'html.parser') elems = example_soup.select('p')
hrmlファイルをBeautifulSoup()関数の引数に渡す場合
import bs4 example_file = open('example.html') example_soup = bs4.BeautifulSoup(example_file, 'html.parser') elems = example_soup.select('p')
for文を使って要素のテキストを取得する場合
for elem in elems:
print(elem.getText())
attrsを使って属性を取得する例
import bs4
soup = bs4.BeautifulSoup(html_doc, 'html.parser')
elem = soup.select_one('a')
attrs_dict = a_tag.attrs
# href属性の値を取得
href_value = elem.attrs.get('href')
print(href_value) # 出力結果: https://www.example.com
# target属性の値を取得
target_value = elem.attrs.get('target')
print(target_value) # 出力結果: _blank
まとめ
WebスクレイピングはWebページから必要な情報を取得するための手法です。プログラムが得意でなくても、少しのコツを覚えるだけで活用できる可能性があります。スクレイピングという言葉に怯える必要はありません。ただしhtmlの基礎知識が必要になります。
コメント