c语言编程笔录

首页 >   > 笔记大全

笔记大全

使用 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";
  }