Google 뉴스에서 기사를 검색하여 기사 제목과 URL을 트윗

16780 단어 PHPTwitterAPIgoogleapi
제목 거리. Google News API, Twitter API를 사용하여 기사를 검색·트윗하는 PHP 프로그램을 작성한다.

개발 환경


  • Windows 10
  • XAMPP에서 Apache 시작
  • PHP 사용

  • Google 뉴스 검색 및 검색



    Google 뉴스 API를 방문하여 기사 정보를 얻습니다.
    사용법에 대해서는, 이 사이트 1 를 참고로 했습니다.

    · 주제 = "스포츠"의 기사 정보를 얻고 싶을 때
    htp // // ws. 오, ぇ. 이 m/네 ws? hl = 그럼 & 네 d = u s & no = U TF-8 & Oh = U TF-8 & U t t t = 나머지 m & Topi c = s
    · "나가 토모"라는 키워드로 좁힌 기사 정보를 얻고 싶을 때
    http://news.google.com/news?hl=ko&ned=us&ie=UTF-8&oe=UTF-8&output=atom&q=나가토모

    각각 액세스. 그러면 결과가 ATOM 형식으로 반환된다.
    이 결과로부터 기사 타이틀과 URL을 꺼내 PHP 배열에 격납한다.

    코드는, 이 사이트 2 의 것을 거의 그대로 copipe 시켜 주고 있습니다.
    뉴스의 키워드 검색에 대해 설명합니다. 토픽스 검색하고 싶을 때에는 URL을 적절히 읽어낸다.
    ※현재 이 코드로 한 번에 꺼낼 수 있는 기사는 10건이 상한인 것 같습니다.

    tweet_gnews.php
    // ---------------------------------------------------------------
    // グーグルニュース検索・データ取得関数 atom
    //
    //
    /* ---------------- 以下、設定部分 ------------------------------ */
    
    //$keyword:ニュース検索のキーワード
    //$max_num:取得記事数の上限
    
    function get_news($keywords, $max_num)
    {
        set_time_limit(90);
    
        //---- キーワード検索したいときのベースURL 
        $API_BASE_URL = "https://news.google.com/news?hl=ja&ned=us&ie=UTF-8&oe=UTF-8&output=atom&q=";
    
        //---- キーワードの文字コード変更
        $query = urlencode(mb_convert_encoding($keywords,"UTF-8", "auto"));
    
        //---- APIへのリクエストURL生成
        $api_url = $API_BASE_URL.$query;
    
        //---- APIにアクセス、結果をsimplexmlに格納
        $contents = file_get_contents($api_url);
        $xml = simplexml_load_string($contents);
    
        //print_r($xml);
    
        //記事エントリを取り出す
        $data = $xml->entry;
    
        //記事のタイトルとURLを取り出して配列に格納
        for ($i = 0; $i < count($data); $i++) {
    
            $list[$i]['title'] = mb_convert_encoding($data[$i]->title ,"UTF-8", "auto");
            $url_split =  explode("=", (string)$data[$i]->link->attributes()->href);
            $list[$i]['url'] = end($url_split);
    
        }
    
        //$max_num以上の記事数の場合は切り捨て
        if(count($list)>$max_num){
            for ($i = 0; $i < $max_num; $i++){
                $list_gn[$i] = $list{$i};
                $i++;
            }
        }else{
            $list_gn = $list;
        }
    
        //配列を出力
        return $list_gn;
    }
    

    ※이하 보충
    기사의 URL 추출에 관한 참고 사이트 2
    $list[$i]['url'] = $data[$i]->link->attributes()->href;
    

    그렇다면 결과가
    [url] => SimpleXMLElement Object
        (
            [0] => http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNExjy_3EjxKvUdoB57vOHC_vBflUQ&clid=c3a7d30bb8a4878e06b80cf16b898331&ei=Dl1lW7CWHZno4wKH9aiQAg&url=http://news.livedoor.com/article/detail/15112210/
        )
    

    처럼 배열이 아니라 SimpleXMLElement Object의 형태로 돌아온다. 또 URL도 소스 원의 기사 URL을 Google 뉴스가 끌어온 것이 되기 어려워. 이를 해결하기 위해,
  • SimpleXMLElement Object를 문자열에 캐스트하여 URL을 문자열로 저장 3
  • 소스 URL을 얻기 위해 검색된 URL을 추가 explode ( "=", ...)로 분해하고 end에서 마지막 꼬리 요소를 참조하십시오

  • 라고 하는 일을 하고 있다.
    ※보충 끝

    기사 제목과 URL 트윗



    얻은 뉴스 정보를 트윗합니다.
    우선은 이 사이트 4 등을 참고로 트윗 준비
  • Twitter 계정 만들기
  • Consumer Key 등의 취득
  • twitteroauth 폴더 배치

  • 한다. 그리고는 트윗 투고 프로그램을 쓸 뿐.
    코드는 이 사이트 5 를 참고로 했습니다.
    트윗 문자수 제한이 있기 때문에, 기사 타이틀은 140자를 넘지 않게 트리밍을 실시한다. URL은 문자수 카운트의 대상외이기 때문에, 타이틀의 뒤에 그대로 실어도 OK.

    tweet_gnews.php
    //Oathライブラリの読み込み
    require "twitteroauth/autoload.php";
    use Abraham\TwitterOAuth\TwitterOAuth;
    
    function tweet(array $news_list)
    {
        //認証情報
        $$consumerKey = "your consumer key";
        $consumerSecret = "your consumer secret";
        $accessToken = "your access token";
        $accessTokenSecret = "your access token secret";
    
        //接続
        $twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
    
        //ニュースツイート
        for($i = 0; $i < count($news_list); $i++){
            $result = $twitter->post(
                    "statuses/update",
                //タイトルのトリミング、URL記載
                    array("status" => mb_substr($news_list[$i]['title'],0,138)." ".$news_list[$i]['url'])
            );
    
            if($twitter->getLastHttpCode() == 200) {
                // ツイート成功
                print "tweeted\n";
            } else {
                // ツイート失敗
                print "tweet failed\n";
            }
        }
    
    }
    

    위의 두 가지 함수를 작성하십시오.

    tweet_gnews
    $news_list = get_news("長友",10);
    tweet($news_list);
    

    실행하면 아래 그림과 같이 검색된 기사가 자동으로 트윗됩니다.




    Google 뉴스를 JSON으로 얻기 ht tp // // 토메하치. 사쿠라. 네. jp/bぉg/아 rゔぇs/486 ¦

    【업데이트】 구글 뉴스 취득 PHP의 예 htps : // 아 f. 미치몬. 네 t/우바바피/오오 ぇ_네 ws. HTML 

    SimpleXMLElement Object 참조 htp //유 t. 하테나 bぉg. 코m/엔트리/20101215/1292427841 

    PHP에서 Twitter 트윗 (2015 년 2 월 버전) htps : // 이 m / 항상 t111 / ms / 9309801 cd3 3bcf6 32  

    PHP에서 Twitter에 게시 htps : // 코 m / 쿵 / ms / 굳이 3 f60 아카 b4b1227d61 

    좋은 웹페이지 즐겨찾기