>  기사  >  백엔드 개발  >  PHP 크롤러 연습: Twitter에서 데이터 크롤링

PHP 크롤러 연습: Twitter에서 데이터 크롤링

WBOY
WBOY원래의
2023-06-13 13:17:392747검색

디지털 시대에 소셜 미디어는 사람들의 삶에 없어서는 안 될 부분이 되었습니다. 트위터는 그 중 하나이며, 수억 명의 사용자가 매일 다양한 정보를 공유하고 있습니다. 일부 연구, 분석, 홍보 및 기타 요구사항의 경우 트위터에서 관련 데이터를 얻는 것이 매우 필요합니다. 이 기사에서는 PHP를 사용하여 키워드 관련 데이터를 크롤링하고 데이터베이스에 저장하는 간단한 Twitter 크롤러를 작성하는 방법을 소개합니다.

1. 트위터 API

트위터는 개발자가 관련 데이터를 얻을 수 있도록 공식 API(응용 프로그래밍 인터페이스) 인터페이스를 제공합니다. 트위터 API를 사용하려면 먼저 애플리케이션(App)을 생성하고 Consumer Key, Consumer Secret, Access Token, Access Token Secret 등 애플리케이션의 관련 매개변수를 얻어야 합니다. 여기서는 구체적인 적용 방법을 설명하지 않습니다.

2. Twitter API 라이브러리 설치

Twitter API는 Twitter API 사용 프로세스를 단순화할 수 있는 개발 액세스 라이브러리(PHP 라이브러리)를 공식적으로 제공합니다. 이 기사에서는 이 라이브러리를 사용하여 Twitter 데이터를 얻습니다. Twitter API 라이브러리를 설치하는 방법은 다양합니다. 여기서는 Composer를 사용하여 종속성을 관리하는 방법을 소개합니다.

1. Composer 설치

composer는 PHP용 종속성 관리 도구입니다. 해당 운영 체제의 설치 패키지를 설치합니다.

2. Composer를 사용하여 Twitter API 라이브러리 설치

명령줄 창에 다음 명령을 입력하여 프로젝트 디렉터리에 Twitter API 라이브러리를 설치합니다.

composer require abraham/twitteroauth

3. Twitter 데이터 가져오기

Twitter API 사용 데이터 분석을 크롤링하려면 인증과 쿼리의 두 단계가 있습니다. 인증이 완료된 후 아래와 같이 query 명령을 사용하여 지정된 Twitter 데이터를 얻을 수 있습니다.

require_once('twitteroauth/autoload.php');
use AbrahamTwitterOAuthTwitterOAuth;

$consumerKey = "your_consumer_key";
$consumerSecret = "your_consumer_secret";
$accessToken = "your_access_token";
$accessTokenSecret = "your_access_token_secret";
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);

$tweets = $connection->get("search/tweets", array("q" => "php", "count" => 100));

위 코드는 "php"와 관련된 최신 100개의 트윗(트윗)을 가져오고 그 결과를 다음과 같이 저장할 수 있습니다. $tweets 변수 중간.

4. 데이터 분석 및 저장

트위터 데이터를 얻은 후에는 데이터를 분석하고 저장해야 합니다. 이 예제에서는 MySQL 데이터베이스를 사용하며, PHP의 PDO 확장 및 SQL 문을 사용하여 데이터를 저장할 수 있습니다. 구체적인 코드는 다음과 같습니다.

try{
    $dbh = new PDO('mysql:host=localhost;dbname=your_database_name', 'your_username', 'your_password');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $tweetsArray = json_decode(json_encode($tweets), True)['statuses']; // 将 tweets 转换成数组
    
    foreach ($tweetsArray as $tweet) {
        $id = $tweet['id_str'];
        $text = $tweet['text'];
        $created_at = date("Y-m-d H:i:s", strtotime($tweet['created_at']));
        $user = $tweet['user']['screen_name'];  
        
        // 将数据保存到数据库中
        $statement = $dbh->prepare("INSERT INTO tweets (id, text, created_at, user) VALUES (:id, :text, :created_at, :user)");
        $statement->bindParam(':id', $id);
        $statement->bindParam(':text', $text);
        $statement->bindParam(':created_at', $created_at);
        $statement->bindParam(':user', $user);
        $statement->execute();
    }
    
    echo "Data saved successfully!";
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}

위 코드는 $tweets 배열의 내용을 구문 분석하고 데이터베이스 테이블 트윗에 지정된 데이터를 저장합니다.

5. 전체 코드

require_once('twitteroauth/autoload.php');
use AbrahamTwitterOAuthTwitterOAuth;

$consumerKey = "your_consumer_key";
$consumerSecret = "your_consumer_secret";
$accessToken = "your_access_token";
$accessTokenSecret = "your_access_token_secret";
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);

$tweets = $connection->get("search/tweets", array("q" => "php", "count" => 100));

try{
    $dbh = new PDO('mysql:host=localhost;dbname=your_database_name', 'your_username', 'your_password');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $tweetsArray = json_decode(json_encode($tweets), True)['statuses']; // 将 tweets 转换成数组
    
    foreach ($tweetsArray as $tweet) {
        $id = $tweet['id_str'];
        $text = $tweet['text'];
        $created_at = date("Y-m-d H:i:s", strtotime($tweet['created_at']));
        $user = $tweet['user']['screen_name'];  
        
        // 将数据保存到数据库中
        $statement = $dbh->prepare("INSERT INTO tweets (id, text, created_at, user) VALUES (:id, :text, :created_at, :user)");
        $statement->bindParam(':id', $id);
        $statement->bindParam(':text', $text);
        $statement->bindParam(':created_at', $created_at);
        $statement->bindParam(':user', $user);
        $statement->execute();
    }
    
    echo "Data saved successfully!";
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}

6. Notes

  1. Twitter API는 제한되어 있으며 각 애플리케이션은 15분마다 특정 수의 요청만 시작할 수 있습니다. 요청이 너무 빈번하면 API가 실패하게 됩니다.
  2. Twitter API에서 반환된 데이터는 JSON 형식이며 json_decode 함수를 사용하여 구문 분석해야 합니다.
  3. 후속 분석 및 처리를 위해 트위터 데이터를 데이터베이스에 저장하는 것이 좋습니다.

7. 요약

이 글에서는 PHP를 사용하여 간단한 트위터 크롤러를 작성하고 데이터베이스에 데이터를 저장하는 방법을 소개합니다. Twitter API를 사용하면 데이터 수집 과정을 크게 단순화할 수 있지만 실제 개발에서는 API의 한계와 데이터 구문 분석 및 저장 프로세스에 여전히 주의를 기울여야 합니다. 이러한 기본 기술을 배우고 익히면 향후 데이터 분석 및 처리를 위한 좋은 기반이 제공될 수 있습니다.

위 내용은 PHP 크롤러 연습: Twitter에서 데이터 크롤링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.