Kinpatu Diary

プログラミング×マラソン

BeautifulsoupでWebスクレイピングをしよう!【Python】

f:id:kinpatucom821:20180902230641p:plain

・Webスクレイピングとは

スクレイピングとは、Webサイトからデータをえて、任意の情報を抽出できるので大変便利です。

Pythonスクレイピングするのに欠かせないライブラリが【BeautifulSoup】。

このBeautifulSoupを使うと手軽にHTMLやXMLから情報を抽出でき解析をする事ができるのですが、あくまでも解析するライブラリなのでダウンロードをする際はurllibを使うことになる。



・Beautifulsoupのインストール

pipでインストール
コマンドラインまたはターミナルから

pip3 install beautifulsoup

・BeautifulSoupの基本的な使い方

HTMLを文字列で指定し、その文字列を解析し任意の部分を抽出して表示する。


beautifulsoup_base.py

#ライブラリを取り込む
from bs4 import BeautifulSoup

#解析したいHTMLを指定

html='''
<html><body>
    <h1>スクレイピングとは?</h1>
    <p>Webページを解析する事。</p>
    <p>任意の箇所を抽出する事</p>
    </body></html>
'''

#HTMLを解析する

#Beautifulsoupの第一引数にHTMLを指定、第二引数に解析を行うパーサーの種類を指定

#HTMLを解析するには、'html.parser'という値を指定する

soup=BeautifulSoup(html,'html.parser')

#任意の部分を抽出する

#HTMLの構造と同じように(.)で繋げて書く

#「soup.html.body.h1」と書くことで、<html><body><h1>の値にアクセスする事ができる

#最初のpも同じだが、次のpは「p1.next_sibling.next_sibling」と書く。

#1回目のnext_siblingでは</p>の直後の改行やスペースが得られ、2回目のnext_siblingで2つ目のpタグにアクセスする。

h1=soup.html.body.h1
p1=soup.html.body.p
p2=p1.next_sibling.next_sibling

#要素のテキストを抽出する

print('h1='+h1.string)
print('p1='+p1.string)
print('p2='+p2.string)


コマンドライン(実行)

$ python beautifulsoup_base.py
h1=スクレイピングとは?
p1=Webページを回移籍する事。
p2=任意の箇所を抽出する事