Dalam era digital, media sosial telah menjadi bahagian yang sangat diperlukan dalam kehidupan orang ramai. Twitter adalah salah satu daripadanya, dengan ratusan juta pengguna berkongsi pelbagai maklumat mengenainya setiap hari. Untuk beberapa penyelidikan, analisis, promosi dan keperluan lain, adalah sangat perlu untuk mendapatkan data yang berkaitan di Twitter. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis perangkak Twitter yang mudah untuk merangkak beberapa data berkaitan kata kunci dan menyimpannya dalam pangkalan data.
1. Twitter API
Twitter menyediakan antara muka API (Application Programming Interface) rasmi untuk pembangun mendapatkan data yang berkaitan. Untuk menggunakan API Twitter, anda perlu membuat aplikasi (Apl) terlebih dahulu dan mendapatkan parameter aplikasi yang berkaitan, termasuk Kunci Pengguna, Rahsia Pengguna, Token Akses dan Rahsia Token Akses. Kaedah aplikasi khusus tidak akan diterangkan di sini.
2. Pasang Perpustakaan API Twitter
API Twitter secara rasmi menyediakan perpustakaan akses pembangunan (Perpustakaan PHP), yang boleh memudahkan proses penggunaan API Twitter. Dalam artikel ini, kami akan menggunakan perpustakaan ini untuk mendapatkan data Twitter. Terdapat banyak cara untuk memasang pustaka API Twitter Di sini kami memperkenalkan kaedah menggunakan komposer untuk mengurus kebergantungan alat pengurusan untuk PHP, anda boleh memuat turun yang sepadan Pasang pakej pemasangan sistem pengendalian.
2. Gunakan komposer untuk memasang perpustakaan API Twitter
Masukkan arahan berikut dalam tetingkap baris arahan untuk memasang perpustakaan API Twitter dalam direktori projek:
3. Dapatkan data Twitter composer require abraham/twitteroauth
Menggunakan Twitter API untuk merangkak data terbahagi kepada dua langkah: pengesahan dan pertanyaan. Selepas pengesahan selesai, anda boleh menggunakan arahan pertanyaan untuk mendapatkan data Twitter yang ditentukan, seperti yang ditunjukkan di bawah:
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));
Kod di atas boleh mendapatkan 100 tweet (tweet) terkini yang berkaitan dengan "php" dan menyimpan menghasilkan pembolehubah $tweets.
4. Menghuraikan dan menyimpan data
Selepas mendapatkan data Twitter, anda perlu menghuraikan dan menyimpan data. Contoh ini menggunakan pangkalan data MySQL, dan anda boleh menggunakan sambungan PDO PHP dan pernyataan SQL untuk menyimpan data. Kod khusus adalah seperti berikut:
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(); }
Kod di atas akan menghuraikan kandungan tatasusunan $tweets dan menyimpan data yang ditentukan dalam tweet jadual pangkalan data.
5. Kod lengkap
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 Nota
API Twitter adalah terhad. Permintaan yang terlalu kerap akan menyebabkan API gagal. Data yang dikembalikan oleh API Twitter adalah dalam format JSON dan perlu dihuraikan menggunakan fungsi json_decode.Atas ialah kandungan terperinci Latihan perangkak PHP: data merangkak di Twitter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!