

【やりたいこと】正規表現を使って、スクレイピングしてみたい!
ここからが、本題のスクレイピングになります!
そもそもスクレイピングってどういう意味なのでしょうか。
スクレイピングとは、「削る」や「こすり落とす」といった英語の意味になります。つまり、元々あったものをスクレイピングすることで、欲しい部分だけを残すイメージです。
前回行った、Webページの取得は、スクレイピングを行う元々のデータを取得するために行いました。
次は、そのデータをスクレイピングすることで、必要なデータだけに加工するわけです。
しかし、どうやって、必要なデータだけにするのでしょうか。
方法は、いくつかありますが、今回は、正規表現によって、スクレイピングを行います。正規表現でのスクレイピングを簡単に説明すると、文字列のパターンを指定して、そのパターンに合った文字列のみを残す方法です。以上のことを、模式図で表すと下記のようになります。
ということで、本記事では、正規表現を使用したスクレイピングを行い、取得したページの記事タイトルと記事のURLを抜き出します。
【10分でできる】正規表現をうまく書けるかがポイント!
※ダウンロード時間は10分の中に含まれていません。
0.概要
取得したページの記事タイトルと記事のURLが、どのようにHTMLで表記されているか確認します。次に、スクレイピングを行うPythonスクリプトファイルを作成します。最後に、Pythonスクリプトファイルを実行し、必要な文字列を取得します。
1.使用したもの
・Virtual box
・Vagrant

・Term Term

・Python3.4
2.手順
※下記の記事の内容を完了しているものとして、進めていきます。



①HTMLの確認
前回、取得したページを開きます。
右クリックして、検証をクリックします。
上記の画像を参考にすると、a要素の属性として記事URLと記事タイトルが存在することが分かります。
この文字列を参考にして、スクリプトファイルを作成しましょう。
②Pythonスクリプトファイルの作成
import re from html import unescape # 前回ダウンロードしたファイルを開き、中身を変数htmlに格納する。 with open('dp.html') as f: blog_html = f.read() # re.findall()を使って、URLと記事タイトルが含まれるHTMLを取得する。 for contain_article_title_url in re.findall(r'<a href=".*?" class="entry-card-wrap a-wrap cf" title=".*?"', blog_html, re.DOTALL): # 記事のタイトルとURLは、a要素のhref属性とtitle属性からそれぞれ取得する。 url_title = re.search(r'<a href="(.*?)" class="entry-card-wrap a-wrap cf" title="(.*?)"', contain_article_title_url).group(1,2) print(url_title)
簡単に解説すると、
with open('dp.html') as f:
blog_html = f.read()
取得したWebページを変数blog_htmlに代入
for contain_article_title_url in re.findall(r'<a href=".*?" class="entry-card-wrap a-wrap cf" title=".*?"', blog_html, re.DOTALL):
記事URLと記事タイトルが含まれる部分を大まかに取得。正規表現で「.*?」と記入されている部分は、どのような文字列とも合う(マッチ)ようにしています。
url_title = re.search(r'<a href="(.*?)" class="entry-card-wrap a-wrap cf" title="(.*?)"', contain_article_title_url).group(1,2)
記事URLと記事タイトルを抜き出しています。「(.*?)」が2つあります。これは、group(1,2)と対応しています。
つまり、group(1)には記事URLが、group(2)には、記事タイトルがあります。
print(url_title)
抜き出した記事URLと記事タイトルを表示させます。
以上、コードの解説を簡単に解説しました。詳しく勉強したい方は、本記事の最後に記載されている参考図書をおすすめします。
③Pythonスクリプトファイルの実行
作成したスクリプトファイルを共有フォルダに移動させて、ゲストOSから実行させます。
上記の画像のように、記事URLと記事タイトルが表示されていれば成功です。
3.追記
正規表現については、「Python逆引き大全」がおすすめです。
【最後に】参考図書の紹介
以下の書籍は、私がPythonスクレイピングを勉強するにあたって、使用した書籍です。
「Python逆引き大全」は、秀和システムの技術書読み放題サービス「10×Eng」で読めます。最初の2週間は無料、それ以降は、月額900円で利用できます。
「プログラミング超初心者が初心者になるためのPython入門」はkindle unlimitedで読めます。
コメント