Me gusta las fotos de instagram usando Selenium | Python

En este artículo, aprenderemos cómo podemos dar me gusta a todas las imágenes de un perfil en Instagram sin desplazarnos y hacer clic manualmente en los botones. Usaremos Selenium para hacer esta tarea. 
 

Paquetes/Software necesario:
 

1. Python 3 
2. Chromedriver compatible con la versión de Chrome existente (descargar chromedriver) 
3. Google Chrome 
4. Paquete Selenium (pip install selenium), paquete bs4 (pip install bs4)

Paso #1: Importar módulos e ingresar la información de inicio de sesión junto con la URL de la página. 
 

Python3

from bs4 import BeautifulSoup as bs
import selenium.common.exceptions
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
 
print("enter username")
username = input()
 
print("enter password")
password = input()
 
print("enter the url")
url = input()

Paso #2: Función para ingresar la ruta donde existe el archivo chromedriver.exe en su sistema 
 

Python3

def path(): 
    global chrome
    print("enter the driver path")
    exe_path = input()
 
    # starts a new chrome session
    chrome = webdriver.Chrome(executable_path = exe_path)

Paso #3: Función para ingresar la URL de la página 
 

Python3

def url_name(url): 
    # the web page opens up
    chrome.get(url)
    
    # webdriver will wait for 4 sec before throwing a 
    # NoSuchElement exception so that the element
    # is detected and not skipped.
    time.sleep(4)

Paso #4: Función para ingresar su información de inicio de sesión 
 

Python3

def login(username, your_password):
     
    # finds the login button
    log_but = chrome.find_element_by_class_name("L3NKy")
    time.sleep(2)
 
    # clicks the login button
    log_but.click()   
    time.sleep(4)
 
    # finds the username box
    usern = chrome.find_element_by_name("username")   
 
    # sends the entered username
    usern.send_keys(username)  
 
    # finds the password box
    passw = chrome.find_element_by_name("password")   
 
    # sends the entered password
    passw.send_keys(your_password)     
    passw.send_keys(Keys.RETURN)
    time.sleep(6)
    notn = chrome.find_element_by_class_name("yWX7d")# dont save info button
    notn.click()# click don't save button
    time.sleep(3)

Paso #5: Función para abrir la primera imagen 
 

Python3

def first_picture():
   
    # finds the first picture
    pic = chrome.find_element_by_class_name("kIKUG")  
    pic.click()   # clicks on the first picture

Paso #6: Función para dar me gusta a una foto 
 

Python3

def like_pic():
    time.sleep(2)
    like = chrome.find_element_by_class_name('fr66n')
    soup = bs(like.get_attribute('innerHTML'),'html.parser')
      if(soup.find('svg')['aria-label'] == 'Like'):
        like.click()
    time.sleep(2)

Paso #7: Función para hacer clic en el botón  Siguiente
 

Python3

def next_picture():
    time.sleep(2)
    try:
        nex = chrome.find_element_by_class_name("coreSpriteRightPaginationArrow")
        time.sleep(1)
        return nex
    except selenium.common.exceptions.NoSuchElementException:
        return 0

Paso # 8: función que continúa dando me gusta a las imágenes hasta que no puede encontrar el siguiente botón 
 

Python3

def continue_liking():
    while(True):
        next_el = next_picture()
 
        # if next button is there then
        if next_el != False:
 
            # click the next button
            next_el.click()
            time.sleep(2)
 
            # like the picture
            like_pic()
            time.sleep(2)
        else:
            print("not found")
            break

Paso #9: Llamar a las funciones 
 

Python3

path()
time.sleep(1)
 
url_name(url)
 
login(username, password)
 
first_picture()
like_pic()
 
continue_liking()
chrome.close()

¡Ahí tienes! Al script le gustarán automáticamente todas las publicaciones hasta el final de la página.
 

Publicación traducida automáticamente

Artículo escrito por sayonighosh2601 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *