使用 PHP 实现抓取 Instagram 信息的示例
更新时间:2023-11-28什么是 Instagram?
Instagram 是一个图片和视频分享社区。它主要通过移动应用程序(包括 iOS 和 Android)提供服务。Instagram 的用户可以发布照片或短视频,然后应用程序会为他们的帖子生成唯一的 URL (通常称为“Instagram 网页”)。要实现对 Instagram 帖子信息的抓取,我们需要一些工具。
使用 Instagram 私人 API 进行数据抓取
Instagram 的开放 API 已经在几年前关闭,现在只有少数合作伙伴能够访问 Instagram 私人 API。虽然 Instagram 并不支持使用其私人 API 进行数据抓取,但是还是有很多第三方工具通过反向工程获得了访问 Instagram 私人 API 的方法。在这个例子里,我们将使用 Instagram-API 客户端,这是一个 PHP 包,使用第三方网站的账户信息, 可以与 Instagram 进行通信。
if (!$username || !$password) { throw new InstagramAuthException('Please provide an account username and password.'); } return new Instagram(new Client(), $username, $password);
抓取 Instagram 用户名的基本信息
一个 Instagram 用户有很多信息,例如用户名、头像、帖子数、关注数等等。要求收集 Instagram 用户的信息,我们可以使用 Instagram-API 客户端提供的类来获取这些信息。 下面的代码将实现使用 Instagram-API 客户端来抓取 Instagram 用户的基本信息:
$instagram = \InstagramScraper\Instagram::withCredentials(['username' => 'your_username', 'password' => 'your_password'], new GuzzleHttp\Client); $instagram->login(); $username = 'therock'; // Instagram 用户名 $account = $instagram->getAccount($username); echo "用户名: {$account->getUsername()}\n"; echo "头像网址: {$account->getProfilePicUrl()}\n"; echo "帖子数: {$account->getMediaCount()}\n"; echo "追随者数: {$account->getFollowedByCount()}\n"; echo "正在关注的用户数: {$account->getFollowsCount()}\n"; echo "简介: {$account->getBiography()}\n"; echo "网站: {$account->getExternalUrl()}";
抓取 Instagram 帖子信息
每个 Instagram 用户都会发布帖子。除了用户信息外,我们还可以收集抓取 Instagram 帖子的信息,例如帖子的文本、网址、点赞数、评论数、帖子类型等等。 下面的代码将实现使用 Instagram-API 客户端来抓取 Instagram 帖子信息:
$instagram = \InstagramScraper\Instagram::withCredentials(['username' => 'your_username', 'password' => 'your_password'], new GuzzleHttp\Client); $instagram->login(); $username = 'therock'; // Instagram 用户名 $medias = $instagram->getMedias($username, 25); // 从当前用户的 Instagram 主页获取最新的25个帖子 foreach ($medias as $media) { echo "文本: {$media->getCaption()}\n"; echo "限时故事: {$media->isStory()}\n"; echo "帖子类型: {$media->getType()}\n"; echo "帖子网址: {$media->getLink()}\n"; echo "点赞数: {$media->getLikesCount()}\n"; echo "评论数: {$media->getCommentsCount()}\n"; echo "投票统计: {$media->getPollCount()}\n"; echo "参与投票人数: {$media->getPollVoterCount()}\n\n"; }