[PYTHON] Holen Sie sich die Tag-Suchergebnisse von Nico Nico-Videos im XML-Format. (Kein Login erforderlich)

Überblick

Holen Sie sich die Tag-Suchergebnisse von Nico Nico-Videos im XML-Format. Es scheint, dass eine Such-API vorhanden ist, die jedoch schwierig zu verwenden ist, da eine Anmeldung erforderlich ist. (→ Referenzartikel: API-Spezifikationen für Nico Nico Video suchen) Ich habe Python-Code geschrieben, um ihn ohne Login zu verwenden.

Code

nc2xml.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

# nc2xml.py
# Copyright (c) 2014 nezuq
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php

import sys
import time
import datetime
import urllib
import urllib2
from lxml import etree

argvs = sys.argv
argc = len(argvs)

#Suchbegriff
KEYWORD = u'Kimashitawa'
if 1 < argc:
    KEYWORD = argvs[1].decode('utf-8')

#Sortierkriterien
#SORT_TYPE = 'n' #Datum und Uhrzeit der Veröffentlichung des letzten Kommentars
#SORT_TYPE = 'v' #Ansichten
#SORT_TYPE = 'm' #Meine Liste
#SORT_TYPE = 'r' #Anzahl der Kommentare
SORT_TYPE = 'f' #Datum und Uhrzeit veröffentlichen
#SORT_TYPE = 'l' #Wiedergabezeit
if 2 < argc:
    SORT_TYPE = argvs[2]

#Zielseitenzahl(Startseite für die ID-Erfassung)
MIN_PAGENUMBER = 1
if 3 < argc:
    MIN_PAGENUMBER = int(argvs[3])

#Zielseitenzahl(Endseite der ID-Erfassung)
MAX_PAGENUMBER = 3
if 4 < argc:
    MAX_PAGENUMBER = int(argvs[4])

#Abrufmethode
SEARCH_TYPE = 'tag' #Tag-Suche

def main():
    keyword = urllib2.quote(KEYWORD.encode("utf-8"))
    ids = []
    nrow_bef = -1
    npage = MIN_PAGENUMBER - 1
    while ((nrow_bef != len(ids)) and (npage < MAX_PAGENUMBER)):
        npage += 1
        uri = 'http://www.nicovideo.jp/%s/%s?sort=%s&rss=2.0&page=%d' % (SEARCH_TYPE, keyword, SORT_TYPE, npage)
        print u'Fragen zur Video-ID:' + uri
        time.sleep(1)
        res = urllib2.urlopen(uri)
        rss = etree.fromstring(res.read())
        nrow_bef = len(ids)
        ids += map((lambda x: x.text.rsplit('/', 1)[1]), rss.findall('./channel/item/link'))
    query = 'http://i.nicovideo.jp/v3/video.array?v=' + ','.join(ids)
    print u'Videodaten erfassen:' + query
    d = datetime.datetime.today()
    #* Wenn die Anfrage länger als 20 Sekunden dauert, tritt eine Zeitüberschreitung auf und die Nummer ist 0.
    #* Das Ausgeben einer lastintensiven Abfrage kann ein IP-Block oder ein API-Block sein, es handelt sich also um NG.
    time.sleep(1)
    urllib.urlretrieve(query, u'%s_%s.xml' % (KEYWORD, d.strftime('%y%m%d%H%M%S')))
    print 'end!'

if __name__ == '__main__':
    main()

nc2xml.Führen Sie py aus.


python nc2xml.py "Lilie" m 1 3

Ausgabebild

http://i.nicovideo.jp/v3/video.array?v=sm9720246,sm19673281

Impressionen

Ich muss die Daten für die Entwicklung der Yuri-Kultur analysieren ... (Sinn für Mission)

Referenzseite

-> Niko Niko Video Search API-Spezifikationen organisiert -> Vergleich der i.nicovideo.jp-API und der getthumbinfo-API -> Ich habe die Such-API für Nico Nico-Videos überprüft und mir eine Notiz gemacht -> Holen Sie sich die Tag-Suchergebnisse von Nico Nico Video per RSS

Recommended Posts

Holen Sie sich die Tag-Suchergebnisse von Nico Nico-Videos im XML-Format. (Kein Login erforderlich)
Vorverarbeitung mit Python. Konvertieren Sie die Tag-Suchergebnisse von Nico Nico-Videos in das CSV-Format
Ergebnisse, die bei der Suche mit diesem Wort nicht erfasst wurden
[Python] Untersuchen Sie die Eigenschaften der Titel der Top-Websites in den Google-Suchergebnissen
Spielen Sie den Kommentar des Nico Nico-Videos auf dem Terminal in Verbindung mit dem Video ab
Auf der Suche nach dem schnellsten FizzBuzz in Python
Holen Sie sich die Größe einer Bilddatei im Web (Python3, keine zusätzliche Bibliothek erforderlich)
Holen Sie sich den Aufrufer einer Funktion in Python
Suchen Sie nach dem Wert der Instanz in der Liste
So ermitteln Sie die Anzahl der Stellen in Python
Auf der Suche nach dem besten zufälligen Punktstereogramm (RDS).
Holen Sie sich das Bild von "Suzu Hirose" von Google Bildersuche.
[Python] Ruft die Liste der im Modul definierten Klassen ab
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Unterschied in den Ergebnissen abhängig vom Argument von multiprocess.Process
Rufen Sie die URL des HTTP-Umleitungsziels in Python ab