首页 > 编程语言 >Python3 insloader库爬取博主视频粉丝量,点赞,互动率,国家等信息

Python3 insloader库爬取博主视频粉丝量,点赞,互动率,国家等信息

时间:2024-12-12 18:28:41浏览次数:8  
标签:Username url shortcode insloader 取博主 点赞 post data Post

写在题前:之前搞Java的,今天部门的人给了我一批视频链接,问问有没有办法爬出来这一批视频链接的博主的粉丝量,以及该视频的互动率等信息。经过一番探索之后了解了insloader库。真不不得不感叹python的强大。

 之前给代码把:

import instaloader
from urllib.parse import urlparse
import time
import csv
import os

# Instagram链接列表
INSTAGRAM_URLS = [
    "示例链接",
    "示例链接",

]


def extract_shortcode(url):
    """
    从Instagram链接中提取短代码(shortcode)
    :param url: Instagram帖子链接
    :return: 短代码或None
    """
    try:
        parsed_url = urlparse(url)
        path_parts = parsed_url.path.strip('/').split('/')
        if len(path_parts) >= 2:
            return path_parts[-1]
        elif len(path_parts) == 1:
            return path_parts[0]
        else:
            return None
    except Exception as e:
        print(f"URL: {url} - 短代码提取失败: {e}")
        return None


def fetch_post_data(shortcode, loader):
    """
    通过短代码获取帖子数据
    :param shortcode: 帖子短代码
    :param loader: Instaloader实例
    :return: 字典包含用户名、粉丝量、观看量、点赞数、评论数、互动率、发布时间 或 None
    """
    try:
        post = instaloader.Post.from_shortcode(loader.context, shortcode)
        username = post.owner_username
        followers = post.owner_profile.followers
        # 根据帖子类型获取观看量
        if post.is_video:
            view_count = post.video_view_count
        else:
            view_count = None  # 对于图片帖子,没有观看量
        likes = post.likes
        comments = post.comments
        # 计算互动率
        if followers > 0:
            interaction_rate = (likes + comments) / followers * 100
        else:
            interaction_rate = None
        # 获取发布时间
        post_date = post.date.strftime("%Y-%m-%d %H:%M:%S")

        return {
            "Username": username,
            "Followers": followers,
            "View Count": view_count,
            "Likes": likes,
            "Comments": comments,
            "Interaction Rate (%)": round(interaction_rate, 2) if interaction_rate is not None else None,
            "Post Date": post_date
        }
    except instaloader.exceptions.InstaloaderException as e:
        print(f"短代码: {shortcode} - 错误: {e}")
        return None


def main():
    # 初始化Instaloader
    loader = instaloader.Instaloader()

    # (可选)登录Instagram账号以提高成功率
    # 如果需要抓取私密帖子或提高抓取成功率,请取消下行注释并填写您的Instagram用户名和密码
    # 注意:频繁自动化登录可能违反Instagram的服务条款
    # loader.login('your_username', 'your_password')

    # 存储结果
    results = []

    for url in INSTAGRAM_URLS:
        shortcode = extract_shortcode(url)
        if shortcode:
            post_data = fetch_post_data(shortcode, loader)
            if post_data:
                results.append(post_data)
                print(
                    f"URL: {url} - Username: {post_data['Username']} - Followers: {post_data['Followers']} - Views: {post_data['View Count']} - Likes: {post_data['Likes']} - Comments: {post_data['Comments']} - Interaction Rate: {post_data['Interaction Rate (%)']}% - Post Date: {post_data['Post Date']}")
            else:
                results.append({
                    "Username": "Username not found",
                    "Followers": "N/A",
                    "View Count": "N/A",
                    "Likes": "N/A",
                    "Comments": "N/A",
                    "Interaction Rate (%)": "N/A",
                    "Post Date": "N/A"
                })
                print(f"URL: {url} - Username not found.")
        else:
            results.append({
                "Username": "Invalid URL or shortcode",
                "Followers": "N/A",
                "View Count": "N/A",
                "Likes": "N/A",
                "Comments": "N/A",
                "Interaction Rate (%)": "N/A",
                "Post Date": "N/A"
            })
            print(f"URL: {url} - 无法提取短代码。")

        # 为了避免被Instagram封锁,暂停一段时间
        time.sleep(2)  # 暂停2秒

    # 将结果保存到CSV文件
    csv_filename = "instagram_posts_data.csv"
    with open(csv_filename, mode='w', newline='', encoding='utf-8') as csvfile:
        fieldnames = ["URL", "Username", "Followers", "View Count", "Likes", "Comments", "Interaction Rate (%)",
                      "Post Date"]
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        for idx, url in enumerate(INSTAGRAM_URLS):
            if idx < len(results):
                data = results[idx]
                writer.writerow({
                    "URL": url,
                    "Username": data["Username"],
                    "Followers": data["Followers"],
                    "View Count": data["View Count"],
                    "Likes": data["Likes"],
                    "Comments": data["Comments"],
                    "Interaction Rate (%)": data["Interaction Rate (%)"],
                    "Post Date": data["Post Date"]
                })
            else:
                writer.writerow({
                    "URL": url,
                    "Username": "Data not available",
                    "Followers": "N/A",
                    "View Count": "N/A",
                    "Likes": "N/A",
                    "Comments": "N/A",
                    "Interaction Rate (%)": "N/A",
                    "Post Date": "N/A"
                })

if __name__ == "__main__":
    main()

输出结果如下:

标签:Username,url,shortcode,insloader,取博主,点赞,post,data,Post
From: https://blog.csdn.net/dnuiking/article/details/144433030

相关文章

  • 如何让朋友圈自动点赞,提高在客户面前的曝光度?
    在如今信息爆炸的时代,如何在朋友圈中脱颖而出,成为客户关注的焦点?答案是高效互动!通过频繁点赞与客户保持互动,不仅能提高曝光率,还能增强彼此的信任感。然而,手动点赞费时费力,是否有更高效的方法?答案是:有!全新升级的PC端朋友圈自动点赞工具为您提供了一站式解决方案。多开支持与秒赞功......
  • 为伙伴点赞:Vector Shop 上架即登付费榜
    好伙伴CYG历时两年独立研发的图形设计软件VectorShop,由于产品设计清爽,操作简单,功能实用等特性,一上架就登上分类收费榜第11名,且排名每天还在上升中。VectorShop是一款独具特色的矢量绘图软件,专为设计师提供直观而强大的功能,助力高效创作精美的矢量图形和图标。通过多种曲......
  • #Python#自动化脚本#编写01-抖音微信快手直播自动点赞
    免责声明本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 如需获取工具,评论区留言即可!!!目录项目需求:主要功能模块1......
  • 新版PC端朋友圈自动点赞工具——秒赞功能上线
    对于频繁需要互动、保持社交活跃的用户来说,手动逐一点赞不仅耗时,而且容易产生疲劳。为了解决这一痛点,PC端朋友圈自动点赞工具在原有的基础上进行了优化和升级,新增了秒赞功能,极大地提升了点赞效率。本篇文章将详细介绍新版工具的秒赞功能,并分享使用体验。 官网(http://aisisoft.top......
  • 油猴脚本(一)学习通讨论点赞 v1.0
    注释很详细,直接上代码//==UserScript==//@name桑桑脚本一号//@namespacehttp://tampermonkey.net///@version2024-11-21//@description学习通讨论点赞v1.0//@author眨眼睛&&洛洛//@matchhttps://groupweb.chaoxing.co......
  • 希冀 操作系统 实验lab1 内核、Boot和printf(保姆级教程 建议点赞收藏 )
    这次我把所有代码都写出来方便大家复制(可以直接复制我的代码粘贴到终端执行)开始之前首先先拉取lab1的内容(一定先干这个,不然做不了实验!!!!!!!!!!!!!!!!)先切换到这个目录下cd20221105894-lab变为:输入gitpullgitcheckoutlab1 之后刷新一下你的学号-lab文件夹,如果改变了就好了,如果......
  • 网络管理 主机资源监控系统项目搭建 (保姆级教程 建议点赞 收藏)
    目录教大家实现图里面的2个仪表盘其他自行根据2个仪表盘的模式进行补充 一.首先准备实验环境需要环境python3.8.8下载完成之后开始配置虚拟环境二.开始编写代码先新建前提文件好了前提工作好了接下来就是写代码了  先写python代码 然后是main.html的代码......
  • vue入门案例-基本使用----非常适合初学者。言简意赅,没有废话。附带springboot+vue前后
    Listitemvue1.vue介绍渐进式JavaScript框架,易学易用,性能出色,适用场景丰富的Web前端框架地址:https://cn.vuejs.org/什么是vue?Vue(发音为/vjuː/,类似view)是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明......
  • Jeff Dean点赞谷歌新研究:鲸鱼生物声学模型,可识别8种鲸类
    鲸鱼声音识别对于保护海洋生态具有重要意义,科学家可以通过分析鲸鱼的声音,了解其种类、迁徙路线、繁殖习惯和社会结构,从而制定更加有效的保护政策。然而,鲸鱼声音识别并非易事。首先,目前全世界已知的鲸鱼种类超过94种,且声学频率范围极为广泛,从蓝鲸低至10赫兹的声波到齿鲸高达1......
  • 如何在PbootCMS中实现无刷新点赞功能?
    为了实现Pbootcms的无刷新点赞功能,可以按照以下步骤操作:引入jQuery库:在页面头部引入jQuery库:html <scriptsrc="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>HTML结构:在页面中添加点赞相关的HTML元素:<buttonclass="support">点赞</bu......