首頁 後端開發 php教程 PHP 爬蟲實戰:爬取 Twitter 上的數據

PHP 爬蟲實戰:爬取 Twitter 上的數據

Jun 13, 2023 pm 01:17 PM
php 爬蟲 twitter

在數位時代下,社群媒體已經成為人們生活中不可或缺的一部分。 Twitter 作為其中的代表,每天有數億用戶在上面分享各種資訊。對於一些研究、分析、推銷等需求,取得 Twitter 上的相關數據是非常必要的。本文將介紹如何使用 PHP 寫一個簡單的 Twitter 爬蟲,爬取一些與關鍵字相關的資料並儲存在資料庫中。

一、Twitter API

Twitter 提供了官方的 API (Application Programming Interface) 接口,供開發者取得相關的資料。使用 Twitter 的 API 需要事先建立一個應用程式(App)並取得應用程式的相關參數,包括 Consumer Key、Consumer Secret、Access Token 和 Access Token Secret。在這裡不再贅述具體的申請方法。

二、安裝 Twitter API 函式庫

Twitter API 官方提供了開發存取函式庫(PHP Library),可以簡化使用 Twitter API 的流程。在本文中,我們將使用這個函式庫實現 Twitter 資料的取得。安裝Twitter API 函式庫有多種方式,這裡介紹使用composer 管理依賴的方法,具體步驟如下:

#1.安裝composer

composer 是PHP 的一個依賴管理工具,可以下載對應作業系統的安裝包進行安裝。

2.使用composer 安裝Twitter API 函式庫

在命令列視窗中輸入以下指令,可以在專案目錄中安裝Twitter API 函式庫:

composer require abraham/twitteroauth

三、取得Twitter 資料

使用Twitter API 爬取資料分為兩個步驟:認證與查詢。在認證完成後,可以使用查詢命令來取得指定的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(推文),並將結果存儲在$tweets 變數中。

四、解析並儲存資料

取得到 Twitter 資料後,需要解析資料並儲存資料。本範例使用的是 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 陣列中的內容,並將指定的資料儲存在資料庫表 tweets 中。

五、完整程式碼

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();
}
登入後複製

六、注意事項

  1. #Twitter API 是有限制的,每個應用程式每15 分鐘只能發起一定數量的請求。過於頻繁的請求會導致 API 失敗。
  2. Twitter API 傳回的資料是 JSON 格式的,需要使用 json_decode 函數解析。
  3. 建議將 Twitter 資料儲存到資料庫中,以便後續的分析和處理。

七、總結

本文介紹如何使用 PHP 寫一個簡單的 Twitter 爬蟲並將資料儲存到資料庫中。雖然使用 Twitter API 可以大幅簡化資料擷取的流程,但在實際開發中仍需要注意 API 的限制和資料的解析和預存程序。學習和掌握這些基本技能,可以為日後的資料分析和處理提供很好的基礎。

以上是PHP 爬蟲實戰:爬取 Twitter 上的數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

區塊鏈資料分析工具有哪些? 區塊鏈資料分析工具有哪些? Feb 21, 2025 pm 10:24 PM

區塊鏈技術的迅速發展帶來了對可靠且高效的分析工具的需求。這些工具對於從區塊鏈交易中提取有價值的見解至關重要,以便更好地理解和利用其潛力。本文將探討市場上一些領先的區塊鏈數據分析工具,包括他們的功能、優勢和局限性。通過了解這些工具,用戶可以獲得必要的見解,最大限度地利用區塊鏈技術的可能性。

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

DeepSeek官方入口在哪? 2025最新訪問指南 DeepSeek官方入口在哪? 2025最新訪問指南 Feb 19, 2025 pm 05:03 PM

DeepSeek,一個綜合性的搜索引擎,提供來自學術數據庫、新聞網站和社交媒體的廣泛結果。訪問 DeepSeek 的官方網站 https://www.deepseek.com/,註冊一個帳戶並登錄,然後就可以開始搜索了。使用特定關鍵詞、精確短語或高級搜索選項可以縮小搜索範圍並獲得最相關的結果。

gateio官方網站入口 gateio官方網站入口 Mar 05, 2025 pm 08:09 PM

Gate.io 官方網站可通過官方應用程序訪問。虛假網站可能包含拼寫錯誤、設計差異或可疑的安全證書。保護措施包括避免點擊可疑鏈接、使用雙因素身份驗證並向官方團隊報告欺詐活動。常見問題涵蓋註冊、交易、出金、客服和費用,而安全措施包括冷存儲、多重簽名和 KYC 合規。用戶應意識到冒充員工、贈送代幣或要求個人信息的常見詐騙手段。

See all articles