PythonでスクレイピングができるBeautiful Soupの使い方

こんにちは!やなぎです。
最近凄く寒いですね。
東京では、氷点下4度まで下がり48年ぶりの寒さみたいです。
名古屋でも少し積雪がありました。
外出の際には気を付けてください….

今日は、Pythonでクロール+スクレイピングができるBeautiful Soupの使い方について説明します。
簡単に出来るので、是非挑戦してみてください。
※不要に頻度を高くしたりすると、DoS攻撃と判定されてしまう可能性があるので注意してください。

使い方

使い方を説明します。
今回はCSSセレクタを利用した方法を説明します。

コード

import urllib.request
import bs4

# HTMLを取得
with urllib.request.urlopen("http://sample.com") as html:
    soup = bs4.BeautifulSoup(html, "html.parser")
# クレイピングする場所を指定
lists = soup.select("ul li a")

解説

# HTMLを取得
with urllib.request.urlopen("http://sample.com") as html:
    soup = bs4.BeautifulSoup(html, "html.parser")

URLからHTMLを取得します。
この時は、ページ全体のHTMLを取得してきています。

urllib.request.urlopen()に取得するサイトのURLを入れます。

# クレイピングする場所を指定
lists = soup.select("ul li a")

取得したHTMLから、取り出す場所をCSSセレクタで指定をします。
今回の場合、liが複数個ある場合は配列になって出力されます。

まとめ

この方法を利用すると、簡単にWEBサイトのスクレイピングが出来ます。
CRONなどと組み合わせることによって、定期的な実行も可能です。

ですが、クローラーを作るというのは危険でもあります。
過去に開発者が趣味で作ったクローラーで逮捕されるという事件も起きています。
参考:岡崎市立中央図書館事件
頻度は低めに設定を行い、出来る限りクロール先のサイト管理者に許可を取って行うようにしてください。

以上、PythonでスクレイピングができるBeautiful Soupの使い方でした。