「日記2010年7月その1」の編集履歴(バックアップ)一覧に戻る

日記2010年7月その1 - (2010/07/24 (土) 16:15:13) のソース

&counter()


Pixivの統計データ。
2010年04月13日に投稿されたイラストのうち10%のイラストの
投稿日時,閲覧数,Tagをこの順に並べたカンマ区切りのテキストデータ。
絵の上手さをノイズと見直してTagが閲覧数に及ぼす影響を見たくて、個人的に集めてみた。
が、Tagが意外と散らばっていて一日分ではデータ解析をするにはデータが足りないようである。

データ集めは小さな自作ソフトでクローラしたが、Pixivに負荷を掛ける処理かもしれないので、あまり大量のデータを集めようとも思わない。
ちなみにネットのアクセス数の何割かはこういうプログラムによるBot系によってしめられており、アクセス数増加=見ている人が多いと勘違いしてはいけない。
半分はBotか内容も見ずに帰った思うくらいが調度良い。

Pixiv統計データ↓文字コードは(sjisEnc)
&ref(test1.txt)


Tagで計算するのは無理だったので常識的な統計データを上げてみる。
縦軸がイラストの平均閲覧数
横軸がイラストのアップされた時刻です。

&ref(Pixiv平均閲覧数2010年4月13日マトメ.png)
2010年4月13日、時間帯別 イラスト平均閲覧数のグラフ。
常識どおり夕方前と朝にイラストをUPすると閲覧数が伸びている。

つまりたいていのユーザーは新着イラスト中心に絵を漁り古いイラストはあまり見ず、朝と夕方に絵を見ているのかもしれない。
たった一日分のデータなのでなんともいえませんが、常識と違いはないかと。




ほかに個人的に行ってみたい統計処理。
Pixivでn時~n+1時までに投稿されたイラストの集合をA。
rを自然数として、
n+r時~n+r+1時までの間にどれだけアクセス数が増加するかを見てみたり?
つまり一時間毎のアクセス数の増加率を見てみたいな。
こうなるとサーバーチックなルーチンが必要になるかな。



*2010/7/23
結局ネットの3流に過ぎない私は作品を書き続けるしかないのです。
というわけで今日も3流の作品をネットに上げます。





*2010/7/24
暑い、暑さで死にそうだ。
脳みそ死んでます、小説の続きは書かない方向で。
って一年前ならいざ知らず今や読者誰もいないから書かなくてもいいか。
どのパートも作るのにそれなりに苦労してんだけどな読者は増えない。
小説家になるって大変だ。
子供の頃から創作をやって、呼吸するように作品が作れるエリート層まじウラヤマシス。











*2010/7/18
http://www.pixiv.net/member_illust.php?mode=medium&illust_id=11926612
蛙のイラスト。
http://www.pixiv.net/member_illust.php?mode=medium&illust_id=11926711
2010年アジア競技大会の強制的用地買収を非難するイラスト。

イラストのアクセス数を増やしてみたいけど適切なタグが思いつかない。
タグだけで100くらいまでいかせて見たいような。
昔も考えたけど、イラストにどんなタグをつけたらアクセス数がどれだけ増えるか予測するソフトとかあってもいいよな。
タグ一つ一つに係数をつけて単純に足し算してみるとか?





*2010/7/19
http://togetter.com/li/2590
リンク先はPixiv運営と報酬の適切な分配、Pixivのもたらした価格破壊についての議論。
こういう議論は考えたこと無かったな。

一ついえるのはPixivというシステムは競争原理を刺激しやすいところ。

ただでさえ絵というのは、絵のよしあしをぱっとみで評価が下せる特殊な業界で競争原理のサイクルが早いのに、
Pixivというシステムが、絵同士を比較させ評価を付ける速度を加速させてしまった。

競争原理の超加速。
それがPixivの一面。

となれば絵描きが価格破壊を懸念するのも分かるッちゃ分かる。


Pixivは絵の競争原理を加速させたのに、絵と何かを組み合わせた商品のラインナップやリストが存在しない。
競争原理はあるのに、商品開発能力や商品との接触が低い。

となれば、狭いところで小さいパイの奪い合い。

無料でも本や商品に自分のイラストを掲載して名を売りたいアマチュア。
こういう人たちがPixivというシステムによって大量に集まってきてプロの領域を侵食すれば。
そりゃ絵描きが悲鳴を上げて議論する罠。


&ref(Pixiv個人的なマトメ.gif)


*2010/7/19
個人的にPixivからデータをクローラして分析してみたくなって製作中の小さなソフト。
Pixivのデータを解析、曜日別閲覧数の推移や日別閲覧数の推移、Tagが閲覧数に及ぼす影響をみたくて作成中。
Pixivにとっては迷惑この上ない仕様になっている上パソコンにも負荷をかける処理。




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        Encoding sjisEnc;
        StreamWriter writer;
        Regex rToukoubi;
        Regex rEturansuu;
        Regex rTags;
        Regex rHyouka;
        Regex rGetNum;
        Regex rGetDate;
        Regex rGetErr;
        bool codeStartFlag = false;
        String nowURL="";
        

        int ilustID = 10000000;
        public Form1()
        {
            InitializeComponent();
            sjisEnc = Encoding.GetEncoding("Shift_JIS");
            writer =new StreamWriter(@"D:\Pixiv統計調査\test1.txt", false , sjisEnc);
            writer.WriteLine("投稿日,閲覧数");


            rToukoubi= new Regex(@"<P>[0-9]+年[0-9]+月[0-9]+日 [0-9]+:[0-9]+", RegexOptions.IgnoreCase);
            rEturansuu = new Regex(
                @"<DIV id=unit>閲覧数:[0-9]+ ", RegexOptions.IgnoreCase);
            rGetDate = new Regex(@"[0-9]+年[0-9]+月[0-9]+日 [0-9]+:[0-9]+", RegexOptions.IgnoreCase);
            rGetNum = new Regex(@"[0-9]+");
            rGetErr = new Regex(@"該当イラストは削除されたか、存在しないイラストIDです。"); 
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (codeStartFlag == true)
            {
                String s = webBrowser1.Document.Body.InnerHtml;
                String s1 = "";
                String sTemp;
                if (rGetErr.Match(s).Length > 1)
                {
                    setNextUrl(20);
                }
                else
                {
                    sTemp = rToukoubi.Match(s).ToString();
                    s1 = rGetDate.Match(sTemp).ToString() + ",";
                    sTemp = rEturansuu.Match(s).ToString();
                    s1 += rGetNum.Match(sTemp).ToString();
                    if (s1.Length > 5)
                    {
                        if (webBrowser1.Url.ToString()  != nowURL)
                        {
                            writer.WriteLine(s1);
                            nowURL = webBrowser1.Url.ToString();
                            if (ilustID < 10001000)
                            {
                                setNextUrl(20);
                            }
                        }
                    }

                }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            string s = "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=10000000";
            
            webBrowser1.Url =new Uri (s);
            
        }
        private void setNextUrl(int no){
            ilustID+=no;
            webBrowser1.Url =new Uri(  "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=" + ilustID.ToString());
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            writer.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            codeStartFlag = true;
            setNextUrl(5);
        }

    }
}


*2010/7/21
Pixivサイトから閲覧数と投稿日時とTagを抜き出して、それをカンマ区切りのテキストデータとして掃き出すコード。
webBrowser 1つ と ボタン 1つ。
でPixivのサイトにログオンしたら指導。
このイラストはアダルトイラスト云々というメッセージが出ると停止してしまう。




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;


namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        Encoding sjisEnc;
        StreamWriter writer;
        Regex rToukoubi;
        Regex rEturansuu;
        Regex rTags;
        Regex rHyouka;
        Regex rGetNum;
        Regex rGetDate;
        Regex rGetErr;
        bool codeStartFlag = false;
        String nowURL="";
        String nextURL;

        int ilustID = 10000000;
        public Form1()
        {
            InitializeComponent();
            sjisEnc = Encoding.GetEncoding("Shift_JIS");
            writer =new StreamWriter(@"D:\Pixiv統計調査\test1.txt", true , sjisEnc);
            writer.WriteLine("ID,投稿日,閲覧数,tag");


            rToukoubi= new Regex(@"<P>[0-9]+年[0-9]+月[0-9]+日 [0-9]+:[0-9]+", RegexOptions.IgnoreCase);
            rEturansuu = new Regex(
                @"<DIV id=unit>閲覧数:[0-9]+ ", RegexOptions.IgnoreCase);
            rGetDate = new Regex(@"[0-9]+年[0-9]+月[0-9]+日 [0-9]+:[0-9]+", RegexOptions.IgnoreCase);
            rGetNum = new Regex(@"[0-9]+");
            rGetErr = new Regex(@"該当イラストは削除されたか、存在しないイラストIDです。");
            rTags = new Regex(@"");  
            
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (codeStartFlag == true && nextURL ==webBrowser1.Url.ToString() )
            {
                String s = webBrowser1.Document.Body.InnerHtml;
                String s1 = "";
                String sTemp;
                if (rGetErr.Match(s).Length > 1)
                {
                    setNextUrl(10);
                }
                else
                {
                    sTemp = rToukoubi.Match(s).ToString();
                    s1 +=ilustID.ToString()+"," ; 
                    s1+= rGetDate.Match(sTemp).ToString() + ",";
                    sTemp = rEturansuu.Match(s).ToString();
                    s1 += rGetNum.Match(sTemp).ToString();
                    
                    
                    HtmlElementCollection hs= webBrowser1.Document.GetElementById("tags").GetElementsByTagName("A");
                    //foreach (e in webBrowser1.Document.GetElementById("tags").GetElementsByTagName("A")){
                      //  s1+=","+e.InnerText; 
                    //}
                    for (int i = 0; i < hs.Count; i+=2)
                    {
                        s1+=","+hs[i].InnerText;
                    }

                    if (s1.Length >10)
                    {
                            
                            if (webBrowser1.Url.ToString () != nowURL)
                            {
                                writer.WriteLine(s1);
                                nowURL = webBrowser1.Url.ToString();
                                if (ilustID < 10050000)
                                {
                                    setNextUrl(10);
                                }
                            }
                            //writer.WriteLine(s1);
                    }

                }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            string s = "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=10000000";
            //webBrowser1.Url =new Uri (s);
            webBrowser1.Navigate(s);
            nextURL = s; 
        }
        private void setNextUrl(int no){
            ilustID+=no;
            webBrowser1.Stop();
            string s = "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=" + ilustID.ToString();
            webBrowser1.Url =new Uri( s );
            webBrowser1.Navigate(s);
            nextURL = s;
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            writer.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            codeStartFlag = true;
            setNextUrl(5);
        }

    }
}