半地下備忘録

たつさんの日記的ななにか。

PythonとBeautifulSoupでスクレイピングやってみた

独習Python入門――1日でプログラミングに強くなる!のなかでスクレイピングに関する章があって、実際に写経して試してみたところ、思ってたよりもずいぶんと簡単に実現できてびっくり。先人たちが開発したライブラリとかって偉大だね。

せっかくなので忘れないうちに、写経するだけじゃなくてちょっと自分のブログにも試してみた。

スクレイピング

そもそもスクレイピングとは、Wikpediaをみてみると。

ウェブスクレイピング(英: Web scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。

ウェブスクレイピング - Wikipedia

ちょっと分かりにくいけど、簡単にいうとWebページのHTMLデータから、自分の欲しいデータを抽出する技術。今回は自分のブログを対象にして、ブログタイトルの取得とトップページに見えている記事のタイトルを取得する。

ちなみにPythonのバージョンは3.5.2。

ブログタイトルを取得

ソース

import urllib.request
from bs4 import BeautifulSoup
req = urllib.request.urlopen('http://blog.0108note.com/')
soup = BeautifulSoup(req, "html.parser")
print(soup.find('h1', id="title").string)

実行結果

半地下備忘録

トップページから記事タイトル一覧を取得

ソース

import urllib.request
from bs4 import BeautifulSoup
req = urllib.request.urlopen('http://blog.0108note.com/')
soup = BeautifulSoup(req, "html.parser")

entry_title = soup.find_all('h1', class_='entry-title')

for title in entry_title:
    print (title.a.string)

実行結果(記事作成時点)

『池袋ウエストゲートパークXI 憎悪のパレード』
Ankerのロボット掃除機「RoboVac 10」が予想以上に使える子だった
娘が1歳5ヶ月になりまして
『独習Python入門――1日でプログラミングに強くなる』
1歳5ヶ月の娘に『はじめてのずかん300』を買ってみた


ブログのタイトルとか記事一覧くらいだとあまりありがたみはないけど、Amazonで特定の商品の価格を監視なんて使い方もできるみたい。あとはスクレイピング単独じゃなくて、例えばTwitterなんかと絡めて何か作れるようになるとぐっと楽しくなると思うんだけど、そこまでモチベーションが保てるのかどうかが問題…。