ニコニコ大百科の記事をpythonでスクレイピングする(サンプルコードあり)
Sal
python ニコニコ大百科の記事にある人気ランキング、記事のリンク一覧を取得するpythonスクリプトを紹介します。

ニコニコ大百科の記事をpythonでスクレイピングする(サンプルコードあり)

  1. pythonでスクレイピング
  2. スクレイピングで使用するライブラリ
  3. サンプルコード(ニコニコ大百科のランキングを取得するコード)
  4. コードの説明
  5. #ライブラリのインポート
  6. #urlの指定
  7. #テーブルの取得
  8. #for文でtdタグを全て手取り出す。
  9. #完了!
  10. いかがだったでしょうか?
##pythonでスクレイピング
主に扱う言語はpython
##スクレイピングで使用するライブラリ
beautifulsoup4 urllib 上記のライブラリを
  pip install beautifulsoup4,urllib
  
でインストールしておきましょう
##サンプルコード(ニコニコ大百科のランキングを取得するコード)
from bs4 import BeautifulSoup
from urllib.request import urlopen, quote
import time

def niconicoRanking():
    url = "https://dic.nicovideo.jp/rank/hours/3/20/all/all"
    html = urlopen(url)
    bsObj = BeautifulSoup(html)
    tableObj = bsObj.find("table",{"class":"rank-list"})
    niconico_info_dict = []
    for column in tableObj.findAll("td"):
        column = column.get_text()
        print(column)
        if "\n\n" in column:
            continue
        try:
            nicoScrapy = NicoScrapy(column)
            nicoScrapy.run()
            description = nicoScrapy.getPageInfo()
        except :
            description = ""
        niconico_info_dict.append({
            "name" :column,
            "description" : description
        })
    return niconico_info_dict
##コードの説明
###ライブラリのインポート
まずは必要なライブラリ各種をインストール
    
from bs4 import BeautifulSoup
from urllib.request import urlopen, quote
    
###urlの指定
そして検索対象のurlですが
    
url = "https://dic.nicovideo.jp/rank/hours/3/20/all/all"
    
ここで指定しているurlへアクセスし、情報を取得します。 その後の
    
html = urlopen(url)
bsObj = BeautifulSoup(html)
    
はおまじないみたいなものと考えてください。
###テーブルの取得
__重要なのは次のコードです。
    
ableObj = bsObj.find("table",{"class":"rank-list"})
    
このコードの意味は tableタグでclass属性がrank-listという意味で ランキングが記載されいているテーブルタグを取得するという意味です。 実際にサイトのページを見ると、以下のhtmlコードが含まれているはずです。 ニコニコ大百科,ランキングサイトのhtml 上記はニコニコ大百科,ランキングサイトのhtmlです。 urlにアクセスした後、Ctrl+右クリックから検証でページのソースを見ることができます。 画像内部のtableタグのclassがrank-listのテーブルを取得するところからがスタートです。
###for文でtdタグを全て手取り出す。
その後、ableObj.findAll("td") というコードで全てのtdタグを取得し、for文を使って それぞれのタグについてfor文ないで処理します。
    for column in tableObj.findAll("td"):
        column = column.get_text()
        print(column)
        if "\n\n" in column:
            continue
        try:
            nicoScrapy = NicoScrapy(column)
            nicoScrapy.run()
            description = nicoScrapy.getPageInfo()
        except :
            description = ""
        niconico_info_dict.append({
            "name" :column,
            "description" : description
        })
    
###完了!
##いかがだったでしょうか?
今回はランキングだけですが、リクエストがあればページ内部の情報収集もやるかもしれないです! title:ニコニコ大百科の記事をpythonでスクレイピングする(サンプルコードあり) description:ニコニコ大百科の記事にある人気ランキング、記事のリンク一覧を取得するpythonスクリプトを紹介します。 img:https://dic.nicovideo.jp/img/og_b.jpg