【问题标题】:How do I use cURL/PHP to dump the current twitter trending topics into mySQL如何使用 cURL/PHP 将当前 twitter 趋势主题转储到 mySQL
【发布时间】:2009-08-21 20:46:51
【问题描述】:

尝试每隔几个小时运行一次读取此处列出的当前 Twitter 趋势主题的 cron 作业:

http://search.twitter.com/trends.json

然后将前 10 个趋势转储到我服务器上的 mySQL 表中

如何做到这一点?谢谢

【问题讨论】:

    标签: php curl twitter


    【解决方案1】:

    这里有几个可以帮助你的建议:


    要使用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_stringPDO::quote 转义数据。

    在这里,您当然需要已经有一个表格,并且结构正确;我还假设您知道如何在 MySQL 表中插入数据。


    如果您有更具体的问题,请随时提出一些您正在使用但不起作用的代码示例(当然还有说明什么不起作用/您收到的错误消息)


    玩得开心!

    【讨论】:

      【解决方案2】:

      <?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);
      

      ?> 玩得开心。

      【讨论】:

        猜你喜欢
        • 2011-03-11
        • 2018-04-01
        • 2017-06-12
        • 1970-01-01
        • 1970-01-01
        • 2016-03-29
        • 2016-12-16
        • 2014-09-17
        • 2017-03-11
        相关资源
        最近更新 更多