0

特定のサイトからアイテムがダウンロードされた回数を表示するダッシュボードを自分で作成しています。この情報はそのサイトに表示されます。Google API を使用してグラフ形式で表示するため、値は<script>タグ内にあります。

このように見えます

<html>
    <body>
<!--   ...somehtml    -->
     <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
          google.load("visualization", "1", {packages:["corechart"]});
          google.setOnLoadCallback(drawChart);
          function drawChart() {
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Date');
            data.addColumn('number', 'Uses');
    data.addRows([['9 May', 1],['22 May', 14],['23 May', 27],['24 May', 23],['25 May', 5],['26 May', 10],['27 May', 20],['28 May', 14],['29 May', 9],['30 May', 8],['31 May', 3],['1 Jun', 2],['2 Jun', 4],['4 Jun', 4],['5 Jun', 2],['6 Jun', 4],['7 Jun', 6],['8 Jun', 7],['9 Jun', 9],['10 Jun', 14],['11 Jun', 6],['12 Jun', 8],['13 Jun', 14],['14 Jun', 13],['15 Jun', 13],['16 Jun', 19],['17 Jun', 4],['18 Jun', 4],['19 Jun', 3],['20 Jun', 1],['22 Jun', 3],['23 Jun', 10],['24 Jun', 3],['25 Jun', 8],['26 Jun', 5],['27 Jun', 10],['28 Jun', 45],['29 Jun', 23]]);        
    var options = {
              width: 277, height: 136,
              title: 'Usage Statistics This Month',
              titlePosition: 'none',
              legend: {position:'none'},
              chartArea: {left:0, top:24, width:277, height: 110},
              hAxis: {textPosition: 'none'}, vAxis: {textPosition: 'in'}
            };

            var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
...somehtml    
    </body>
</html>

私が欲しいデータは、「data.addRows」の後のものです。スクレイピングは初めてなので、これを行う方法が見つかりませんでした。この形式の配列に格納された値を取得できるかどうか疑問に思います:

例 :

For -> ['9 May', 1]

キーとして「23 Jun」、として10を持つ配列にある必要があります

4

1 に答える 1

0

あなたが使用することができます:

$file = file_get_contents('http://x.com/scriptname.html');
preg_match_all('/\[\'(.*?)\',(.*?)]/i', $file,$result);

for ($i = 0; $i <count($result[0]); $i++) {
        echo $result[1][$i];
        echo ':';
        echo $result[2][$i];
        echo '<br/>';
}

この正規表現を使用すると、数値と日付が抽出されます。

ただし、要求した配列が必要な場合:

$datearray = array();

for ($i = 0; $i <count($result[0]); $i++) {
        $datearray[$result[2][$i]] = $result[1][$i];
}

print_r($datearray);
于 2013-06-30T21:28:29.680 に答える