茨城県つくば市でモバイルアプリ(iPhone、Android)のプログラミングをする日記です。あとWordPress、Raspberry Pi、Arduinoなど。

モバイルプログラミング@つくば

はてなブックマークをスクレイピングしてホットエントリーを抽出する

投稿日:2016年1月5日 更新日:

本記事では、Python 2.7を使っています。
執筆から時間が経っており、情報が古い可能性があります。

こんにちは、okuzawatsです。
はてなブックマークのホットエントリーはマメにチェックしています。

今回は、Pythonで「はてなブックマーク」のウェブサイトをスクレイピングして、はてなブックマークで話題になっている記事(ホットエントリー、通称「ホッテントリ」)のタイトルとURLを抽出します。
ここでホッテントリとは、はてなブックマークのトップページに掲載されているエントリーとして話を進めます。

スクレイピングに使うツールは以下のとおりです。
Beautiful Soupは、HTMLやXMLをパースしてくれるPythonのライブラリです。

  • Python(2.7.5)
  • Beautiful Soup(4.4.0)

Beautiful Soupの詳しい使い方については、公式ドキュメントを参照してください。

Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation

ところで、はてなブックマークはソーシャルブックマークのひとつで、インターネットで話題になっている記事を見つけることができます。
今回、はてなブックマークをスクレイピングする目的は、ソーシャルメディア上で話題になっている記事を抽出することです。

はてなブックマークは、オンラインにブックマークを保存・公開することで新しい体験ができる、ソーシャルブックマークです。
はてなブックマークを利用すると、インターネットの情報をより深く理解でき、良質なページをより少ない時間で見つけられます。
ブックマークすることで、知らないだれかと価値を共有するのは、すばらしいことです!

出典:はてなブックマークって? - はてなブックマーク

はてなブックマークのトップページは、こんな感じになっています。

はてなブックマーク

ソースを覗いてみると、各ホッテントリへのリンクは、こんな感じでマークアップされています。
aタグの中に、class="entry-link"、data-track-click-target="direct"というふたつの属性が設定されています。

class="entry-link"、data-track-click-target="direct"というふたつの属性を使い、Beautiful Soupのパース結果からホッテントリへのリンクを抽出します。
具体的には、Beautiful Soupのオブジェクトに対してfind_allメソッドを使い、class_="entry-link"、attrs={'data-track-click-target':'direct'}として絞り込みます。

上記のコードを実行すると、こんな感じで出力されます。

「おじいちゃんのノート」注文殺到 孫のツイッター、奇跡生んだ偶然 - withnews(ウィズニュース) http://withnews.jp/article/f0160105002qq000000000000000W00o0201qq000012896A
ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(Tensor... http://d.hatena.ne.jp/shu223/20160105/1451952796
ワイがアメリカ留学して驚いたことで打線:キニ速 http://blog.livedoor.jp/kinisoku/archives/4559928.html
『魔法つかいプリキュア!』新プリキュア役のキャスト2名が判明 | アニメイトTV http://www.animate.tv/news/details.php?id=1451876975
(以下略)

10行程度のコードですが、はてなブックマークのホッテントリを綺麗に抽出してくれています。

はてなブックマークをスクレイピングするスクリプト on GitHub

はてなブックマークをスクレイピングしてホッテントリを抽出するスクリプトの最新版は、GitHub上で公開しています。
このコードを使っていただいたら、ついでにGitHubのフォロー、スターをしていただけると励みになります!

はてなブックマークからホッテントリのタイトルとリンクを抽出するスクリプト on GitHub

あわせて読みたい本

-Python

Copyright© モバイルプログラミング@つくば , 2017 AllRights Reserved Powered by AFFINGER4.