Loading

(ハッシュタグ#applejpを検索、最新の100件をjsonで取得)×過去に遡り15ページ繰り返す→mysqlに登録 というサンプル。
つまり、1,500件の検索が出来るので、1,500件が流れないタイミングで、1日1回とか、1時間に1回このコードを動かせば全ての検索結果がDBに記録される。
mysql でtwitter_idフィールドを重複不可にしておけば、同一tweetは登録されない。
超単純。

あとはDBから抜き出して、煮るなり焼くなり好きにしてほしい。

んで、私はプログラマーじゃないんで、細かいつっこみとか、難しい質問は勘弁してください。

<?php
$db_host = ‘**.****.com’;
$db_user = ‘******’;
$db_password = ‘******’;
$db_name = ‘******’;
$link = mysql_connect( $db_host, $db_user, $db_password );
mysql_select_db( $db_name );
$result = mysql_query( ‘set character set utf8’ );
?>

<html>
<meta http-equiv=”Content-Type” content=”text/html;charset=utf-8″>

<title>Twitter DB登録</title>
<body>

<?php

for ($page = 1; $page <=15; $page++) {// 1~15ページ目までのループ

$searchUrl = ‘http://search.twitter.com/search.json’;
$searchParams = http_build_query(array(‘q’=>’#applejp’,’rpp’=>100,’page’=>$page));//ハッシュタグ「#applejp」をrpp最大100件取得
$searchResults = json_decode(file_get_contents(“$searchUrl?$searchParams”));

//テーブル”twitter_db”を作る必要があります。
//idとmessage_idフィールドは数値型で、idをprimary indexに。message idは重複負荷にする。
//created_atがtweet日時、from_userがtweetした人のtwitter id、profile_image_urlがtweetした人のアイコン画像、textがtweet本文。

if (isset($searchResults)) {
$results = $searchResults->results;
for ($i = 0; $i < count($results); $i++) {
$sql = “insert into twitter_db (
message_id,
created_at,
from_user,
profile_image_url,
text
) values (
‘” . mysql_real_escape_string( $results[$i]->id ) . “‘,
‘” . mysql_real_escape_string( $results[$i]->created_at ) . “‘,
‘” . mysql_real_escape_string( $results[$i]->from_user ) . “‘,
‘” . mysql_real_escape_string( $results[$i]->profile_image_url ) . “‘,
‘” . mysql_real_escape_string( $results[$i]->text ) . “‘                        )”;
$result = mysql_query( $sql );
?>
<!–一応目に見えるようにhtml書き出し–>
<div style=”border:1px solid #aaaaaa; width:400px;”><!–一つのtweetを囲むdiv–>
<p style=”padding:5px;”><img src=”<?php echo ($results[$i]->profile_image_url); ?>”></p><!–アイコン–>
<p style=”padding:5px;”><?php echo ($results[$i]->from_user); ?></p><!–twitterユーザ名–>
<p style=”padding:5px;”><?php echo ($results[$i]->text); ?></p><!–tweet内容–>
<p style=”padding:5px;”><?php echo ($results[$i]->created_at); ?></p><!–tweet日時–>
<p style=”padding:5px;”><?php echo ($results[$i]->id); ?></p><!–tweet id–>
</div>
<!–/html書き出し–>
<?php
}//end for i
}//end if
}//end for page
?>

</body>
</html>


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Top