-
Star
(150)
You must be signed in to star a gist -
Fork
(56)
You must be signed in to fork a gist
-
-
Save tacomonster/555bceef3d14673810f625edd000c112 to your computer and use it in GitHub Desktop.
from selenium import webdriver | |
from selenium.webdriver.common.keys import Keys | |
import time | |
import random | |
import sys | |
def print_same_line(text): | |
sys.stdout.write('\r') | |
sys.stdout.flush() | |
sys.stdout.write(text) | |
sys.stdout.flush() | |
class InstagramBot: | |
def __init__(self, username, password): | |
self.username = username | |
self.password = password | |
self.driver = webdriver.Chrome() | |
def closeBrowser(self): | |
self.driver.close() | |
def login(self): | |
driver = self.driver | |
driver.get("https://www.instagram.com/") | |
time.sleep(2) | |
login_button = driver.find_element_by_xpath("//a[@href='/accounts/login/?source=auth_switcher']") | |
login_button.click() | |
time.sleep(2) | |
user_name_elem = driver.find_element_by_xpath("//input[@name='username']") | |
user_name_elem.clear() | |
user_name_elem.send_keys(self.username) | |
passworword_elem = driver.find_element_by_xpath("//input[@name='password']") | |
passworword_elem.clear() | |
passworword_elem.send_keys(self.password) | |
passworword_elem.send_keys(Keys.RETURN) | |
time.sleep(2) | |
def like_photo(self, hashtag): | |
driver = self.driver | |
driver.get("https://www.instagram.com/explore/tags/" + hashtag + "/") | |
time.sleep(2) | |
# gathering photos | |
pic_hrefs = [] | |
for i in range(1, 7): | |
try: | |
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") | |
time.sleep(2) | |
# get tags | |
hrefs_in_view = driver.find_elements_by_tag_name('a') | |
# finding relevant hrefs | |
hrefs_in_view = [elem.get_attribute('href') for elem in hrefs_in_view | |
if '.com/p/' in elem.get_attribute('href')] | |
# building list of unique photos | |
[pic_hrefs.append(href) for href in hrefs_in_view if href not in pic_hrefs] | |
# print("Check: pic href length " + str(len(pic_hrefs))) | |
except Exception: | |
continue | |
# Liking photos | |
unique_photos = len(pic_hrefs) | |
for pic_href in pic_hrefs: | |
driver.get(pic_href) | |
time.sleep(2) | |
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") | |
try: | |
time.sleep(random.randint(2, 4)) | |
like_button = lambda: driver.find_element_by_xpath('//span[@aria-label="Like"]').click() | |
like_button().click() | |
for second in reversed(range(0, random.randint(18, 28))): | |
print_same_line("#" + hashtag + ': unique photos left: ' + str(unique_photos) | |
+ " | Sleeping " + str(second)) | |
time.sleep(1) | |
except Exception as e: | |
time.sleep(2) | |
unique_photos -= 1 | |
if __name__ == "__main__": | |
username = "USERNAME" | |
password = "PASSWORD" | |
ig = InstagramBot(username, password) | |
ig.login() | |
hashtags = ['amazing', 'beautiful', 'adventure', 'photography', 'nofilter', | |
'newyork', 'artsy', 'alumni', 'lion', 'best', 'fun', 'happy', | |
'art', 'funny', 'me', 'followme', 'follow', 'cinematography', 'cinema', | |
'love', 'instagood', 'instagood', 'followme', 'fashion', 'sun', 'scruffy', | |
'street', 'canon', 'beauty', 'studio', 'pretty', 'vintage', 'fierce'] | |
while True: | |
try: | |
# Choose a random tag from the list of tags | |
tag = random.choice(hashtags) | |
ig.like_photo(tag) | |
except Exception: | |
ig.closeBrowser() | |
time.sleep(60) | |
ig = InstagramBot(username, password) | |
ig.login() |
can someone pls explain what this section is doing exactly
for i in range(1, 7):
hmmm. I cannot seem to get the code to work on my mac. Can anyone assist? It might be related to the python my computer is using?
Now I have this error message on PyCharm:
/Users/student/PycharmProjects/youtube/venv/bin/python "/Users/student/Desktop/youtube vid/instagram.py"
File "/Users/student/Desktop/youtube vid/instagram.py", line 1
import selenium from webdriver
^
SyntaxError: invalid syntaxProcess finished with exit code 1
sir its from selenium import webdriver
How do you add the comments.txt, config.json and hashtags.txt to the code? I am receiving the following error: FileNotFoundError: [Errno 2] No such file or directory: './instaRes/config.json'
I am able to login, but I am kicked out right away. Thank you
its worked owww really supwe
can you do it without needing a password, just by username?
Had this problem because I opened another session. only declare webdriver under init