今私は小さな魚だけれど

ちょっぴり非日常な音楽を紹介するブログです

【pixiv】【Python】pixivAPIをいい感じのcsvで出力してくれるPythonコード

これの続き。これをRにでも突っ込んで何かしら解析したいな~と思っています。

【pixiv】【Python】pixivAPIを使ってイラスト情報データを引っこ抜いてみた

python2系で書いたんですが、文字コード変換がややこしくて「.encode("utf-8")」が非常に多いです。python3系だと統一されてるみたいなんですが。

pixivAPIの中身はこの記事を参考にしました。またR-18かどうかを判別するカラムも見つけたのでそれも出力データに残してあります。

PixivAPIを使った検索とソートソフトの配布:ブロマガのタイトル * - ブロマガ

# -*- coding: utf-8 -*-

import pandas as pd

from dateutil.parser import parse

from datetime import datetime

word = "アイカツ"

#SSID取得元:http://spapi.pixiv.net/iphone/login.php?mode=login&pixiv_id=

SSID = "(取得したPHPSSID)"

preurl = "http://spapi.pixiv.net/iphone/search.php?s_mode=s_tag&word=" + word + "&PHPSESSID=" + SSID

#空のデータフレームを取得

frame = pd.DataFrame()

for pagenum in range(1,200):

url = preurl + "&p=" + str(pagenum)

df = pd.read_csv(url, header=None, encoding='utf-8')

if len(df[0]) == 50: #pandasのバージョンによってカラムの指定方法が違う?

frame = frame.append(df)

print pagenum ,

else:

frame = frame.append(df)

print pagenum

break

frame2 = frame[[0,1,12,13,15,16,17,26]]

frame2.columns=["picID","userID","datetime","tags","num_of_rating","rating","visits","R-18"]

#datetimeを日付と時間のカラムに分ける

datelist = []

timelist = []

for date in frame2.datetime:

datelist.append(parse(date).date())

timelist.append(parse(date).time())

frame2["date"] = datelist

frame2["time"] = timelist

#キャラクターのタグが含まれているか2値のカラムを作る

clist = [u"星宮いちご",u"霧矢あおい",u"紫吹蘭",u"有栖川おとめ",u"藤堂ユリカ",u"北大路さくら",u"一ノ瀬かえで",u"神崎美月",u"三ノ輪ヒカリ",

u"神谷しおん",u"光石織姫",u"ジョニー別府",u"涼川直人",u"星宮りんご",u"星宮らいち",u"音城セイラ",u"冴草きい",u"風沢そら"]

for chara in clist:

templist = []

for tags in frame2.tags:

if chara.encode('utf-8') in tags.encode('utf-8').split():

templist.append(1)

else:

templist.append(0)

frame2[chara.encode("utf-8")] = templist

#不要なカラムを削除(tagsは文字コードの都合でto_csvで出力できない?)

del frame2["tags"]

del frame2["datetime"]

frame2.to_csv("ai_test.csv")