【问题标题】:Making an instagram posting bot with python?用python制作一个instagram发布机器人?
【发布时间】:2015-08-11 09:56:37
【问题描述】:

好的,所以我对使用 python 编程一无所知,但我想制作一个机器人来发布到 Instagram 有一段时间了,所以我认为这将是“开始运行”的好方法。

我没有具体的时间框架,所以不要着急。

我还不知道任何编程语言,但我想扩展,因为我使用基于 GUI 的 Web 自动化工具,我发现它与编程语言有很多重叠,例如 if 语句、变量、循环等。

我一直觉得学习一门合适的语言是一项更好的长期投资。

因此,既然我对此一无所知,但我心中有我的目标,人们能否就我应该为这项任务学习什么方面提出我从哪里开始的建议?然后我就可以专注于我需要学习的内容,并逐步完成。

我只想上传图片作为一项操作,并在 Instagram 上关注/取消关注另一项操作。所以请告诉我Id是怎么做的。有人告诉我,python 是最好的多面手,因为它以整洁的方式完成所有操作,即代码更少且直观。将来我想基于 Web 自动化制作其他项目,所以我觉得这将是一个很好的学习,可以从专业程序员告诉我的内容中学习。

我知道我可能含糊不清,但由于我的无知,我不确定要问什么,所以如果需要细化这个问题,请尽管问。

【问题讨论】:

标签: python instagram


【解决方案1】:

有了 Instagram,就无需进行“网络自动化”,因为有一个 API,您可以轻松使用。

比这更简单,有一个python库可以使用:https://github.com/Instagram/python-instagram

顺便说一句,我忍不住要评论你的句子“有人告诉我,python 是最好的多面手,因为它以一种整洁的方式完成所有事情,即更少的代码并且很直观。”。

Python 确实是一门好学的语言,但所有语言都有其优缺点,因此请尽量忘记“有最好的语言”的想法。如果是这样的话,我们都会使用相同的,而不必费心学习其中的许多:)

【讨论】:

  • 当然我明白你的意思,但我认为那个人对我说它最好先学习,其他人会从那里清楚。我认为这就是信息。
【解决方案2】:

您应该注意,虽然您可以关注和取消关注用户以及喜欢和不喜欢媒体。您不能使用他们的 API 发布到 Instagram。

【讨论】:

  • 是的,这是我在使用基于浏览器的查看器时已经发现的问题。我目前的解决方案是使用安装了手机模拟器的 windows 自动化和 vbox,但使用适当的机器人来简化它会更好。
  • Soemone 是一名程序员,他说我在使用 instagram 并复制它时必须以某种方式嗅出“即将发生的事情”。他们更详细,我已经保存了消息。
  • 是的,我们做到了……一位同事在 4 个帖子后迅速被禁止了他的帐户。他们的发布 API 是私有的,并且不会让它变得困难,这是有原因的。他们希望严格控制发布到 Instagram 的内容以及发布方式。编辑:这是一个滑坡问题。他们不仅试图阻止人们创建垃圾邮件帐户。但他们也试图限制某人在获得您的访问令牌并开始向帐户发送垃圾邮件时可能造成的损害。只需查看 facebook 和垃圾邮件网络钓鱼帖子,例如“嘿,这是你吗...{这里是狡猾的链接}”
  • 您可以使用 Instagram 的私有 API,例如参见 github.com/mr0re1/pynstagram 库。
  • 我不会使用这样的东西。您很可能会禁止您的帐户,并将您的应用程序从他们的 api 中列入黑名单。它被称为私有是有原因的
【解决方案3】:

您是否已经有一些初步的编程经验?如果没有,请快速介绍一下 python 的世界。已经有大量好的信息来源/tutorials

为了与 Instagram 交流,您将与 Instagram API 互动。这是 Instagram 提供的一组功能,可让您与他们的数据进行交互。这些交互发生在 http 请求中,并且通常采用 json 格式。

幸运的是,python 中有一个库已经封装了大部分这些 API 交互,可以在 here 找到。这样您就不必担心 http 请求部分,我相信这对于初学者来说可能相当困难。如果你觉得python有点舒服,你应该去看看github项目的read-me文件;它应该让您对如何开始有一个基本的了解。

【讨论】:

  • 正如我所说,我没有在垫子上写行方面进行任何编码:)。但是这个程序:zennolab.com/en/products/zennoposter我已经使用了大约 3 年。我不知道它会被归类为什么?也许是一个脚本工具?当我在看一个 python 介绍时,我看到了很多熟悉的东西,比如检查文本的语法,比如 if exists if doesn't exist 等等。还有我在我的OP中提到的事情。所以我不知道这算不算经验:)。
  • 我明白了。我已经查看了您链接的程序。这似乎是了解编程概念的一个很好的介绍。我仍然建议您查看原始教程(我链接),但也许 Joachim 提供的链接更适合编码新手; CodeAcademy 提供了一套从零开始的优秀教程。 CodeAcademy 的优势在于他们的教程由小任务组成,因此您不必自己想出练习。当您对这种语言感到足够熟悉时,请继续解决您的 Instagram 问题。
  • 啊,感谢您看一看,很高兴您这么认为 :)。现在开始学习代码学院。到目前为止一切顺利:)
【解决方案4】:

我已使用此 api 在 instagram 上发帖 https://github.com/LevPasha/Instagram-API-python 代码如下:

from InstagramAPI import InstagramAPI
InstagramAPI = InstagramAPI(user,pwd)
InstagramAPI.login() # login
photo_path ='path to image'
caption = "your caption"
InstagramAPI.uploadPhoto(photo_path, caption = caption)

【讨论】:

  • 你好,我得到这个 UnboundLocalError: local variable 'InstagramAPI' referenced before assignment 尝试使用您的代码时。
【解决方案5】:

一个想法是使用 Seleniumwebdriverchromedriver 打开 Chrome 选项卡,登录帐户并执行一些工作,例如单击在某个地方,做某事等。示例:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep, strftime
from random import randint
import pandas as pd

optionss = webdriver.ChromeOptions()
optionss.binary_location = 'C:/Program Files (x86)/Google/Chrome Beta/Application/chrome.exe' # Directory where your chrome.exe is
chrome_driver_binary = './chromedriver.exe' # Change this to your own chromedriver path! 
webdriver = webdriver.Chrome(executable_path=chrome_driver_binary, options=optionss)
sleep(2)
webdriver.get('https://www.instagram.com/accounts/login/?source=auth_switcher')
sleep(3)

username = webdriver.find_element_by_name('username')
username.send_keys('YOUR-USERNAME')
password = webdriver.find_element_by_name('password')
password.send_keys('YOUR-PASS')

button_login = webdriver.find_element_by_xpath('//button[normalize-space()="Login"]')
button_login.click()
sleep(4)

notnow = webdriver.find_element_by_xpath('//button[normalize-space()="Not now"]')
notnow.click() #comment these last 2 lines out, if you don't get a pop up asking about notifications
sleep(2)

##############
### From here, put the tasks you want to be done,
### like click to send image, etc, etc. 
### You need to study the html code.
##############

根据要执行的任务,在一个和另一个之间放置一些 sleep() 以避免您的帐户被暂停一段时间。

为了获得那些 XPath,我使用 Opera 浏览器。右键单击 > 检查元素 > 找到 html 代码 > 右键单击​​此 html 代码 > 复制 > 复制 XPath 或完整 XPath

并将其用于 find_element_by_xpath。有很多方法可以做到这一点...选择你的。

【讨论】:

    【解决方案6】:

    我认为,如果您在 Instagram 之前从未编程过,这可能不是一个好的第一个项目。不过,这是一个很好的激励性中期目标。

    查看互动教程,例如https://www.codecademy.com/tracks/python

    【讨论】:

    • 我同意,但我认为有东西可以拍摄是件好事 :)。
    【解决方案7】:

    它有点重,但您可以使用 Selenium 并在您的浏览器上创建一个机器人。如果您不想阅读网页代码,甚至可以在窗口上进行自动点击。

    【讨论】:

      【解决方案8】:

      我最近开始认真研究这个问题。过去能够做到这一点的所有 API 都已被 Instagram 关闭,如果他们发现你,他们甚至可能会禁止你的帐户。

      我使用 Python、Selenium 和 Docker 提出了一个非常简单的解决方案。 只需安装 Docker 并按照说明进行操作:

      https://github.com/RunlevelConsulting/Automate-Instagram-Uploads

      【讨论】:

        【解决方案9】:

        我看到很多答案都很老了,而且在 2021 年不起作用,所以这里是 Instagram bot 的最新工作方法。

        我正在使用 instabot python 库,它允许您上传帖子、故事、视频、制作 cmets 等等。它有一些问题,但这段代码会为您处理所有这些问题。尽情享受吧!

        from instabot import Bot
        import os
        import shutil
        
        
        def clean_up():
            dir = "config"
            remove_me = "imgs\img.jpg.REMOVE_ME"
            # checking whether config folder exists or not
            if os.path.exists(dir):
                try:
                    # removing it so we can upload new image
                    shutil.rmtree(dir)
                except OSError as e:
                    print("Error: %s - %s." % (e.filename, e.strerror))
            if os.path.exists(remove_me):
                src = os.path.realpath("imgs\img.jpg")
                os.rename(remove_me, src)
        
        
        def upload_post():
            bot = Bot()
        
            bot.login(username="your_username", password="your_password")
            bot.upload_photo("imgs/img.jpg", caption="Caption for the post")
        
        
        if __name__ == '__main__':
            clean_up()
            upload_post()
        

        【讨论】:

        • 如果有人遇到一些错误或错误,请告诉我,我会尽力提供帮助。
        • 请注意,需要将路径“imgs/img.jpg”更改为存储要上传的图像的文件夹。
        • 我收到错误消息:错误 - 照片上传失败,响应如下: 2021-08-12 16:26:37,978 - 信息 - 照片 'bigshoeslover.jpg' 不是上传。 2021-08-12 16:26:37,982 - 信息 - 请求总数:31
        【解决方案10】:

        所以既然我对此一无所知,但我心中有我的目标可以 人们建议我应该从哪里开始学习 任务?然后我可以专注于我需要学习和工作的内容 一块一块的。

        很难回答。但我会尽力而为。

        在 Github 上有一个很棒的 instagram bot project。你可以试一试。但是当你尝试的时候你会发现不学习python的基本概念是无法理解这个项目的。

        所以,从Sololearn 开始。与 Stack Overflow 类似,Sololearn 拥有庞大的社区。 (不像stackoverflowsololearn的社区很友好)

        【讨论】:

          猜你喜欢
          • 2022-01-02
          • 1970-01-01
          • 2021-03-25
          • 1970-01-01
          • 2021-06-19
          • 2021-11-23
          • 2019-02-17
          • 2021-05-17
          • 1970-01-01
          相关资源
          最近更新 更多