5ちゃんねる(旧2ch)という巨大掲示板はテキストデータの宝庫である。
そのデータを活用したい、分析したいと思っている人は多いのではなかろうか。
今回は5ちゃんねる(旧2ch)をスクレイピングする方法について触れてみる。
5ちゃんねるとは?
5ちゃんねるとは、昔で言う「2ちゃんねる」の事で、権力闘争やら権利の関係の末に「5ちゃんねる」という名に変わったものである。
2ちゃんねる(にちゃんねる)は、日本の電子掲示板である。2ちゃんねるは、略して「2ちゃん」、「2ch」などとも表記される。
1999年5月中に「ひろゆき」(西村博之)を名乗るネットユーザーの個人サイトとして開設。
2014年2月、2ちゃんねるの実質的管理権限が何らかの理由によりジム・ワトキンス(以下「ジム」)に移転、ジムが2ちゃんねるの実質的管理者となる。「ひろゆき」は対抗して「2ちゃんねる (2ch.sc)」を開設。これまでの「2ちゃんねる」は、区別が必要な文脈において「2ちゃんねる(2ch.net)」として表現される。
2017年10月1日、当時までの「2ちゃんねる(2ch.net)」が突如「5ちゃんねる」(ごちゃんねる)に名称変更、ドメイン名も「5ch.net」に変更された。
2ちゃんねる - Wikipedia
テーマ別に「板」と呼ばれるページが用意されており、板の中に様々なスレッドが立てられ、スレッドの中でユーザーが書き込みを行っている。内容は玉石混淆というかほとんどは価値のない石の方が多いが、大量のユーザーの意見が飛び交う集合知としての価値は計り知れない。
5ちゃんねるからデータを取得する方法
5ちゃんねるからデータを取得するにはスクレイピングを行う。
スクレイピングとは、APIのようなデータ配布手段を用いずにHTMLを解析してデータを取得する手段を指す。
Pythonでのスクレイピング方法
Pythonでのスクレイピングを行うには BeautifulSoup
を用いる。
BeautifulSoup
を使うことでHTMLから任意のタグを取得することができる。
下の例では2ch.scのメニューからニュースを含む板を取得している。
[code lang=python]
#モジュールのインポート
import urllib.request
from bs4 import BeautifulSoup
import re
#対象のサイトURL
url = "https://www.2ch.sc/bbsmenu.html"
#URLリソースを開く
res = urllib.request.urlopen(url)
#インスタンスの作成
soup = BeautifulSoup(res, 'html5lib')
#head内のタイトルタグを取得
site_title = soup.html.head.title
print(site_title.string)
#最初のaタグ
body_href = soup.html.body.a
print(body_href)
#<a href="http://2ch.sc/" target="_top">2chの入り口</a>
#「ニュース」を含むaタグ全部
body_href = soup.find_all("a", text=re.compile("ニュース"))
print(body_href)
#[<a href="http://ai.2ch.sc/newsalpha/">ニュース速報α</a>, <a href="http://ai.2ch.sc/newsalpha/">ニュース速報α</a>,...]
[/code]
この手法で メニュー -> 板 -> スレッド
と掘り下げて行けば5ちゃんねるのデータが取得できる。
参考
PythonでLet's Webスクレイピング! ①任意の要素の抽出 - Qiita
5ch(旧2ch)をスクレイピングして、過去流行ったネットスラングの今を知る - にほんごのれんしゅう
まとめ
- 5ちゃんねるからデータを取得するにはスクレイピング
- Pythonでスクレイピングするなら
BeautifulSoup