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.
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
http://i.nicovideo.jp/v3/video.array?v=sm9720246,sm19673281
Ich muss die Daten für die Entwicklung der Yuri-Kultur analysieren ... (Sinn für Mission)
-> 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