【发布时间】:2009-08-21 20:46:51
【问题描述】:
尝试每隔几个小时运行一次读取此处列出的当前 Twitter 趋势主题的 cron 作业:
http://search.twitter.com/trends.json
然后将前 10 个趋势转储到我服务器上的 mySQL 表中
如何做到这一点?谢谢
【问题讨论】:
尝试每隔几个小时运行一次读取此处列出的当前 Twitter 趋势主题的 cron 作业:
http://search.twitter.com/trends.json
然后将前 10 个趋势转储到我服务器上的 mySQL 表中
如何做到这一点?谢谢
【问题讨论】:
这里有几个可以帮助你的建议:
要使用curl:您需要initialize一个连接,configure它,和execute它。
例如,这样的事情可能会做(非常基本的例子):
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://search.twitter.com/trends.json");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close($ch);
// $json contains the data you want
var_dump($json);
你会得到这样的输出:
string '{"as_of":"Fri, 21 Aug 2009 20:59:54 +0000","trends":[{"name":"Follow Friday","url":"http:\/\/search.twitter.com\/search?q=%22Follow+Friday%22"},{"name":"#BrutalLegend","url":"http:\/\/search.twitter.com\/search?q=%23BrutalLegend"},{"name":"#shoutout","url":"http:\/\/search.twitter.com\/search?q=%23shoutout"},{"name":"#fact","url":"http:\/\/search.twitter.com\/search?q=%23fact"},{"name":"Inglourious","url":"http:\/\/search.twitter.com\/search?q=Inglourious"},{"name":"Which Horror Movie","url":"http:\/\/search.twitter.com\/search?q=%22Which+Horror+Movie%22"},{"name":"Cataclysm","url":"http:\/\/search.twitter.com\/search?q=Cataclysm"},{"name":"Inglourious Basterds","url":"http:\/\/search.twitter.com\/search?q=%22Inglourious+Basterds%22+OR+%22Inglorious+Basterds%22"},{"name":"District 9","url":"http:\/\/search.twitter.com\/search?q=%22District+9%22"},{"name":"Twitter Besides","url":"http:\/\/search.twitter.com\/search?q=%22Twitter+Besides%22"}]}' (length=955)
当然,您可能还想设置几个其他选项;如需完整列表,请查看curl_setopt 的文档。
解析 JSON 字符串:
如果你使用 PHP >= 5.2,你可以使用json_decode 来解析 json 数据:
$data = json_decode($json);
var_dump($data);
然后你会得到这样的东西:
object(stdClass)[1]
public 'as_of' => string 'Fri, 21 Aug 2009 21:01:48 +0000' (length=31)
public 'trends' =>
array
0 =>
object(stdClass)[2]
public 'name' => string 'Follow Friday' (length=13)
public 'url' => string 'http://search.twitter.com/search?q=%22Follow+Friday%22' (length=54)
1 =>
object(stdClass)[3]
public 'name' => string '#BrutalLegend' (length=13)
public 'url' => string 'http://search.twitter.com/search?q=%23BrutalLegend' (length=50)
2 =>
object(stdClass)[4]
public 'name' => string '#shoutout' (length=9)
public 'url' => string 'http://search.twitter.com/search?q=%23shoutout' (length=46)
3 =>
object(stdClass)[5]
public 'name' => string '#fact' (length=5)
public 'url' => string 'http://search.twitter.com/search?q=%23fact' (length=42)
4 =>
object(stdClass)[6]
public 'name' => string 'Inglourious' (length=11)
public 'url' => string 'http://search.twitter.com/search?q=Inglourious' (length=46)
5 =>
object(stdClass)[7]
public 'name' => string 'Cataclysm' (length=9)
public 'url' => string 'http://search.twitter.com/search?q=Cataclysm' (length=44)
6 =>
object(stdClass)[8]
public 'name' => string 'Which Horror Movie' (length=18)
public 'url' => string 'http://search.twitter.com/search?q=%22Which+Horror+Movie%22' (length=59)
7 =>
object(stdClass)[9]
public 'name' => string 'Inglourious Basterds' (length=20)
public 'url' => string 'http://search.twitter.com/search?q=%22Inglourious+Basterds%22+OR+%22Inglorious+Basterds%22' (length=90)
8 =>
object(stdClass)[10]
public 'name' => string 'District 9' (length=10)
public 'url' => string 'http://search.twitter.com/search?q=%22District+9%22' (length=51)
9 =>
object(stdClass)[11]
public 'name' => string 'Hurricane Bill' (length=14)
public 'url' => string 'http://search.twitter.com/search?q=%22Hurricane+Bill%22' (length=55)
这包含从 twitter 获得的全部数据。
将数据插入数据库:
现在,您必须遍历这个“趋势”数组,并且对于每一行,将其插入到您的 MySQL 数据库中。
为此,您可以使用:
使用准备好的语句也可能有帮助 (mysqli, pdo) ;-)
无论如何,如果您不使用准备好的语句,则必须使用mysqli_real_escape_string 或PDO::quote 转义数据。
在这里,您当然需要已经有一个表格,并且结构正确;我还假设您知道如何在 MySQL 表中插入数据。
如果您有更具体的问题,请随时提出一些您正在使用但不起作用的代码示例(当然还有说明什么不起作用/您收到的错误消息) !
玩得开心!
【讨论】:
<?php
$curl = curl_init();
curl_setopt_array($curl, Array(
/* CURLOPT_HEADER => true,
CURLOPT_POSTFIELDS => $postdata,
CURLOPT_POST => $method == 'POST',
CURLOPT_HTTPHEADER => $headers,
CURLOPT_USERAGENT => "Mozil.....", */
CURLOPT_URL => "http://search.twitter.com/trends.json",
CURLOPT_TIMEOUT => 300,
CURLOPT_CONNECTTIMEOUT => 60,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_ENCODING => 'gzip,deflate'
));
$json = curl_exec($curl);
$json = json_decode($json);
echo "<pre>";
print_r($json);
?> 玩得开心。
【讨论】: