python制作增粉机器人,Instagram的粉丝我突破一百万了!
提高粉丝量是一个代价高昂并且困难的任务,如果你想获得和你兴趣相同或者符合你账号定位的粉丝那就更难了。
学习Python中有不明白推荐加入交流群
号:960410445
群里有志同道合的小伙伴,互帮互助,
群里有不错的视频学习教程和PDF!
虽然Instagram通过一些方式来对我的照片进行了推广,但是我的粉丝量从来没有超过380。我曾决定在Ins上面发布照片,并且坚持定期更新,但由于较少的粉丝量无非为我提供更新动态的动力,坚持不会超过几个月就会放弃。
这个项目的目标是建立一个更大的受众范围,作为一个附加项,它也许可以提高我销售照片的网站的流量!
一年前,也就是我上次使用Ins时,我使用了一个可以看出谁取消了对你的关注的应用程序。通过它我发现了一种获取粉丝的方法。通过发表评论、点赞并关注一些人,来获得回粉,然后几天过后再对这些人取消关注。
这种方法并没有使我感觉到惊讶,因为我知道Ins上会存在一些机器人,但使得我想拥有一个自己的Ins机器人。
这就是我为什么会建立这个项目,让我们现在开始吧。当我正在学习Selenium并试图寻找一些项目来使用它时,我想到了一个简单的Python机器人。Selenium就像是一个浏览器,你可以很容易地在Python中与之进行交互。
正是世界需要的!另一个Instagram机器人……
经历过一些思考之后,我将目标确立为增加领域相关的粉丝。我想让粉丝真正的是因为兴趣来关注我,看到更多我的工作。在最常用的主题标签中很容易遇到奇怪的内容,所以我计划用这个机器人账号查找特定的主题标签并与那里的照片动态进行互动。这样,我可以非常具体地获得我想要的类型的粉丝。例如,我非常喜欢长曝光摄影,因此我可以针对那些使用该主题标签发布动态的人来构建我的粉丝群。非常简单高效!
我的相册拥有不同主题或风格的照片,从街头摄影到航拍,再到旅行照片等等。因为里斯本是我的家乡,所以我也有很多那里的照片。这些都会成为我要使用的话题标签。
但是,这并不是一个在24小时内能获得1000粉丝的机器人。(从前文可以看出,作者构建的这个机器人账号不仅注重粉丝量的增长,还在乎粉丝的类型与质量。)
那么我们在谈论什么样的吸粉速度?
我用几个不同的标签运行机器人几次,如“travelblogger”,“travelgram”,“里斯本”,“dronephotography”。在三天的过程中,我从380个粉丝数变成了800个。还收获了许多赞和评论,甚至一些有机增长(粉我的人,但我的机器人并没有关注他)。
要明确的是,我没有密集使用这个机器人,因为如果你运行太快,Instagram将停止响应。它需要在动作之间有一些间隔命令,因为通过短时间内进行大量评论或关注,Instagram会停止响应。
这个过程中,你需要登录帐户,因此我几乎可以肯定,如果速度过快,Instagram可以知道您正在做一些奇怪的事情。最重要的是,在对十几个主题标签执行此操作之后,在相同的主题标签中找到新用户变得更加困难。您需要花几天时间来刷新用户群。
但我不想在这个过程中关注这么多人……
在Instagram上获取粉丝的最有效方式(除了发布精彩照片!)就是关注别人。这个机器人对我来说效果很好,因为我不关心我是否通过关注2000人来获得400名粉丝。
机器人会保存一个列表,其中包含在运行时所关注的所有用户,因此有一天我可能会对此列表执行某些操作。例如,我可以访问每个用户个人资料,评估他们有多少粉丝或帖子,并决定是否要继续关注他们。或者我可以在他们的图库中获取第一张图片并检查其日期以查看他们是否是活跃用户。
如果我们从机器人中删除关注操作,我可以向您保证增长率会受到影响,因为人们不太愿意基于单个点赞或评论来对你进行关注。
这是最后一个副标题!
你需要Python(我使用的是Python 3.7),Selenium,一个浏览器(在我的情况下我将使用Chrome)和…显然,一个Instagram帐户!关于机器人的快速概述:
打开浏览器并登录账号
对于hashtag列表中的每个hashtag,它将打开页面并单击第一张图片将其打开
然后它会点赞,关注,评论并移动到下一张图片,共200迭代循环(数字可以调整)
使用机器人保存您所关注的所有用户的列表
如果你达到了这一段,谢谢!你完全应该收到你的奖励!如果您发现这对你个人有任何帮助,请在下面分享您的经验:)
Ins涨粉机器人源码第一部分:
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep, strftime
from random import randint
import pandas as pd
chromedriver_path = 'C:/Users/User/Downloads/chromedriver_win32/chromedriver.exe' # Change this to your own chromedriver path!
webdriver = webdriver.Chrome(executable_path=chromedriver_path)
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_password')
button_login = webdriver.find_element_by_css_selector('#react-root > section > main > div > article > div > div:nth-child(1) > div > form > div:nth-child(3) > button')
button_login.click()
sleep(3)
notnow = webdriver.find_element_by_css_selector('body > div:nth-child(13) > div > div > div > div.mt3GC > button.aOOlW.HoLwm')
notnow.click() #comment these last 2 lines out, if you don't get a pop up asking about notifications
为了使用chrome与Selenium,你需要安装chromedriver。这是一个相当简单的过程,我没有遇到任何问题。只需安装并更换上面的路径即可。完成后,我们的变量webdriver将打开一个Chrome标签页。
在源码中,您应该使用您自己的用户名和相应的密码替换字符串。您可能已经注意到,在运行时,Chrome会打开一个新标签。在密码之后,将登录按钮定义为对象,在下一行中,实现对其单击。
如果你想知道那些奇怪的字符串是什么,不要害怕!那是用来为机器人指路的代码,只需右键单击要映射的元素并选择“检查”,即可轻松获得此字符串。
进入检查模式后,找到与您要映射的内容相对应的HTML代码。右键单击它并将鼠标悬停在“复制”上。您将看到有关于如何复制它的一些选项。我在整个代码中使用了混合的XPath和CSS选择器(它在find_element_方法中可见)。我花了一段时间才能让所有引用顺利运行。有时,css或xpath定向会失败,但是当我调整间隔时间后,一切都开始顺利运行。
python制作增粉机器人,Instagram的粉丝我突破一百万了!
在这种情况下,我选择了“copy selector”并将其粘贴到find_element_方法中。它会为您找到第一个结果。如果是find_elements,将检索所有元素,您可以指定要获取的元素。
一旦完成迭代循环。您可以在hashtag_list中添加更多主题标签。如果您是第一次运行它,您没有包含您所关注用户的文件,因此您只需将prev_user_list创建为空列表即可。
一旦运行一次,它将保存带有时间戳的csv文件及其所关注的用户。该文件将在第二次运行时充当prev_user_list。简单易懂地实现对机器人的跟踪。
hashtag_list = ['travelblog', 'travelblogger', 'traveler']
# prev_user_list = [] - if it's the first time you run it, use this line and comment the two below
prev_user_list = pd.read_csv('20181203-224633_users_followed_list.csv', delimiter=',').iloc[:,1:2] # useful to build a user log
prev_user_list = list(prev_user_list['0'])
new_followed = []
tag = -1
followed = 0
likes = 0
comments = 0
for hashtag in hashtag_list:
tag += 1
webdriver.get('https://www.instagram.com/explore/tags/'+ hashtag_list[tag] + '/')
sleep(5)
first_thumbnail = webdriver.find_element_by_xpath('//*[@id="react-root"]/section/main/article/div[1]/div/div/div[1]/div[1]/a/div')
first_thumbnail.click()
sleep(randint(1,2))
try:
for x in range(1,200):
username = webdriver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/article/header/div[2]/div[1]/div[1]/h2/a').text
if username not in prev_user_list:
# If we already follow, do not unfollow
if webdriver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/article/header/div[2]/div[1]/div[2]/button').text == 'Follow':
webdriver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/article/header/div[2]/div[1]/div[2]/button').click()
new_followed.append(username)
followed += 1
# Liking the picture
button_like = webdriver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/article/div[2]/section[1]/span[1]/button/span')
button_like.click()
likes += 1
sleep(randint(18,25))
# Comments and tracker
comm_prob = randint(1,10)
print('{}_{}: {}'.format(hashtag, x,comm_prob))
if comm_prob > 7:
comments += 1
webdriver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/article/div[2]/section[1]/span[2]/button/span').click()
comment_box = webdriver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/article/div[2]/section[3]/div/form/textarea')
if (comm_prob < 7):
comment_box.send_keys('Really cool!')
sleep(1)
elif (comm_prob > 6) and (comm_prob < 9):
comment_box.send_keys('Nice work :)')
sleep(1)
elif comm_prob == 9:
comment_box.send_keys('Nice gallery!!')
sleep(1)
elif comm_prob == 10:
comment_box.send_keys('So cool! :)')
sleep(1)
# Enter to post comment
comment_box.send_keys(Keys.ENTER)
sleep(randint(22,28))
# Next picture
webdriver.find_element_by_link_text('Next').click()
sleep(randint(25,29))
else:
webdriver.find_element_by_link_text('Next').click()
sleep(randint(20,26))
# some hashtag stops refreshing photos (it may happen sometimes), it continues to the next
except:
continue
for n in range(0,len(new_followed)):
prev_user_list.append(new_followed[n])
updated_user_df = pd.DataFrame(prev_user_list)
updated_user_df.to_csv('{}_users_followed_list.csv'.format(strftime("%Y%m%d-%H%M%S")))
print('Liked {} photos.'.format(likes))
print('Commented {} photos.'.format(comments))
print('Followed {} new people.'.format(followed))
代码非常简单。如果你了解一些Python的基本概念,你可以快速读懂它。
循环中的print语句可以让我们实时跟踪机器人,看它处于第几次迭代。它将显示它所在的主题标签,迭代次数以及为评论操作生成的随机数。我决定不在每个页面发表评论,所以我添加了三个不同的评论和1到10之间的随机数,这将定义是否有任何评论或三者中的一个。循环结束,我们将new_followed用户附加到先前的用户“database”并使用时间戳保存新文件。您还会收到一份小报告。
让这个机器人在服务器上运行会更好,但是我还有其他想要探索的项目,配置服务器不是其中之一!请随意在下面发表评论,我会尽力回答您的问题。
网友评论