10


38
 
from bs4 import BeautifulSoup
import requests
from time import sleep


def main():
    # このソースコードの34行目でページ遷移先を作るためのURL。遷移先は存在しない。
    url = "http://dic.nicovideo.jp/b/a/%E9%87%8E%E7%8D%A3%E5%85%88%E8%BC%A9%E6%96%B0%E8%AA%AC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/" 

    # クローリングはこちらのページから始める
    url2 = "http://dic.nicovideo.jp/b/a/%E9%87%8E%E7%8D%A3%E5%85%88%E8%BC%A9%E6%96%B0%E8%AA%AC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/1-"

    # 検索したい文字列を入れる
    inp = input("検索したい文字列を入れるんだよあくしろよ  : ")

    # ページ取得
    CLASS = "pager"
    tables = text_capcher(url2, CLASS)

    # ページに飛ぶ回数を計算
    t = tables[0].find_all("a", class_="navi")
    t2 = t[1].previous_sibling.previous_sibling.text
    t2 = int(int(t2) / 30)

    for m in range(t2):

        # 初回だけ
        if m == 0:
            j = 1
        print("-"* 40)
        # 現在のページ番号表示(1、 31、61......と続く)
        print(j)
        # 次の遷移先URLを作る
        url3 = url + str(j) + "-"
        # 取得するURLの表示
        print(url3)
        
        # 取得対象の文が入っているクラスを指定
        CLASS = "content"
        tables = text_capcher(url3, CLASS)
        
        for i in tables:
            i2 = i.find_all("dd", class_="resbody")
            for n in i2:
                # 探したい文字列を含む文だけ表示
                if inp in n.text:
                    print(n.text)

        j = 30 * (m+1) + 1

        # 2秒毎にアクセス
        sleep(2)

# ページを取得するメソッド
def text_capcher(url, Class):
    HTML = requests.get(url)
    soup = BeautifulSoup(HTML.content, "lxml")
    tables = soup.find_all("div", class_= Class)
    return tables


if __name__ == "__main__":
    main()


最近日記ばかりでしたので、淫夢研究を進めるためのツールを提供します。

・目的
 - 有力視されている説を抽出しやすくするため。
 - これから自分が考えていく新説の先駆者はいないか確認しやすくするため。

ニコニコ大百科の野獣先輩新説シリーズの項目は、現在1650ものレスがあります。
それらの書き込みの大半は新説の提案です。
しかしこのままでは調査するにも膨大な時間を消費してしまいます。
そこで今回、抽出スクリプト(単純なクローラー)を書きました。

今回はJupyter notebook上で実行します。
ターミナル(MacやLinux)やコマンドプロンプト(Windows)でも実行可能です。

実行したあと、「検索したい文字列を入れるんだよあくしろよ : 」という文字が現れ、文字を打つよう迫られます。

12


「有力」や「説」と打ってエンターを押せば、それらを含んだ文章が表示されます。

実行結果はスクリーンショットでおさめました

19

37


14

(結果は抜粋です。全部載せると長くなりそうなので)
「有力」と書かれた文を抜き出すことができました。
その表示された文が載っているURLも同時に掲載されています。




あとは自分のあたためた説に先駆者がいないか確認もできます。
仮面ライダー説を推してる人はいないか。

43



結果(一部)

151
http://dic.nicovideo.jp/b/a/%E9%87%8E%E7%8D%A3%E5%85%88%E8%BC%A9%E6%96%B0%E8%AA%AC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/151-

野獣先輩仮面ライダーX説・人間はみんなライダーなんだよ(前提条件)・水泳部→神敬介の特技は水泳、Xライダーは深海開発用改造人間・空手部→神敬介は父から武術の手ほどきを受けていた・サッー!、チュパ音、ブッチッパ!など→特撮特有の効果音・逝き過ぎィ!→最愛の父、恋人とその妹を次々と殺されてしまった・胸にかけて胸に!→ガードラングの防御力に自信がある・俺に入れてください!→先輩である風見志郎に輸血とマーキュリー回路の取り付けを頼んでいる・一回の撮影で何度も射精→Xライダーの驚異的な回復力は第一話から度々クローズアップされていた・ここ数年の4章の再評価→Xライダーも放送当時は不人気だった・Xライダーの武器はライドル→野獣先輩も腰に長さや硬さの変わる棒をつけている・3作目のサイクロップス先輩→銀色のボディは変身後の姿に他ならない 目に装着しているのはレッドアイザー、イカせ隊のなすがままなのはパーフェクターを装着していないから


961
http://dic.nicovideo.jp/b/a/%E9%87%8E%E7%8D%A3%E5%85%88%E8%BC%A9%E6%96%B0%E8%AA%AC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/961-

野獣先輩芦原涼(仮面ライダーギルス説)・ギルスは野獣のような仮面ライダー・野獣と化した先輩→(野獣のような)仮面ライダーになってしまった男・人の本来あるべきヘテロセクシャルから進化したホモ→ギルスは人から進化したアギトの一種である・一生ネットの晒し者にされる不幸な男→芦原涼は仮面ライダー屈指の不幸な男・どちらも水泳部・「何かスポーツやってるの?」「特にはやってないんですけど」→作中で水泳部を退部・後輩をレイプ、薬を盛る粗野な男→すぐに人を殴る粗野な男・3P中に後輩を気遣ったり、倒れそうになった後輩を支える優しさも持つ→困っている人を見たら助けずにはいられない優しさを持つ・うるさい→ギルスもうるさい・野獣の咆哮→ギルスヒールクロウ・死亡説→芦原涼も死んだことがある・いつも疲れてんな→変身後はいつも疲れている
    


1141
http://dic.nicovideo.jp/b/a/%E9%87%8E%E7%8D%A3%E5%85%88%E8%BC%A9%E6%96%B0%E8%AA%AC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/1141-

野獣先輩仮面ライダー1号説大会近いからね→オールライダー対大ショッカーのライダートーナメントすげぇ白くなってる→後輩のKUGのグローイングフォームを見たときの反応ちょっと刃当たんよ~→戦闘員のサーベルを強奪して斬りかかる見とけよ見とけよ→特訓中に後輩たちに技の手本を見せてるお前のことが好きだったんだよ!→長き戦友の2号に対する迫真の告白ファッ!?→ショッカー首領の正体に驚愕した為動揺した一言
    



ありました。
このように活用することができます。






クローリングの間隔は、サーバーへの負荷を考慮して最低でも1秒以上取る必要があると言われてます。
自分は2秒に1度の取得という設定にしています。
ソースコード中では

sleep(2) 

というところがそれにあたります。
これを守らないと、アクセス禁止にされることもあり、最悪逮捕の場合もあります。

逮捕された事例
岡崎市立中央図書館事件
(リンク先はwikipedia)

逮捕時の容疑は偽計業務妨害。
クローラーを使って図書館側のウェブサイトに定期的にリクエストを送っていたが、サーバーに負荷がかかり、アクセスがしづらくなったために図書館側が被害届→逮捕という流れでした。
逮捕された方はリクエストの頻度を1秒あたり1回に設定していたのですが(これは常識の範囲内の設定で問題はない)、図書館側への接続方式がよろしくなかったために、過剰な負荷をかけてしまったようです。
でも実名で報道するまでの必要があったのかは疑問です。
一部では、図書館側のシステムがクソザコ過ぎたためにアクセス困難になったのに、常識の範囲内で利用していた人に罪をなすりつけた、という見方もあります。




MacやLinuxのターミナルの場合ですと以下です。


mkdir test
これでフォルダを作ります。testフォルダです。フォルダとはファイルを入れる箱です。

cd test
testフォルダに進みます。

vim scra.py
scra.pyというファイルを新規作成します。
ここでソースコードを貼り付けて保存します。
それかGUIで操作してもOKです。

python scra.py
実行します。拡張子を.pyにすることでpythonファイルになります。


このように、プログラムを組めると楽しいことができます(新説生成の効率化)。

26


おしまい