Селен Python для создания инстаграм логин бот - PullRequest
0 голосов
/ 28 февраля 2019

Я использую Селен для Python, чтобы создать простой бот лайкера для Instagram.Идея состоит в том, чтобы понравиться первая фотография тега (в данном примере это «закат»).Он правильно выбирает первую фотографию, но не вставляет подобное.

Код выглядит следующим образом:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

from time import sleep

import User_data

chrome_options=Options()

chrome_options.add_argument('--lang=en')
browser = webdriver.Chrome(chrome_options=chrome_options)

browser.get("https://www.instagram.com/accounts/login/")
sleep(1)

browser.find_element_by_name("username").send_keys(User_data.username)
browser.find_element_by_name("password").send_keys(User_data.password)

sleep(1)

browser.find_element_by_xpath('//*[@id="react-root"]/section/main/div/article/div/div[1]/div/form/div[3]/button').click()

sleep(1)
browser.get("https://www.instagram.com/explore/tags/sunset/")

sleep(1)
browser.find_element_by_xpath("//article/div[2]/div/div/div/a/div/div[2]").click()
sleep(1)
browser.find_element_by_xpath("//button/span[contains(@class. 'glyphsSpriteHeart__outline__24__grey_9 u-__7') ]").click()

1 Ответ

0 голосов
/ 28 февраля 2019

Причина, по которой вы не можете войти в систему, заключается в том, что ваш код не может найти element by xpath, который вы указали.Возможно, это связано с тем, что указанный вами xpath не поддерживается.

Я нашел обходной путь для этого, где я использую функцию find_elements_by_tag_name(), которая возвращает мне список кнопок, и с помощью простой итерации я обнаружил, чтовторая возвращенная кнопка соответствует кнопке входа в Instagram.Итак, вот рабочий код, который вы найдете полезным.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

from time import sleep

import User_data

chrome_options=Options()

chrome_options.add_argument('--lang=en')
browser = webdriver.Chrome(chrome_options=chrome_options)

browser.get("https://www.instagram.com/accounts/login/")
sleep(1)

browser.find_element_by_name("username").send_keys(User_data.username)
browser.find_element_by_name("password").send_keys(User_data.password)

sleep(2)

buttons = browser.find_elements_by_tag_name('button')
for button_element in buttons:
    print(button_element.text)     #- This will print the text of the buttons present

Это напечатает вам поля text всех кнопок: Вывод:

Show
Log in
Log in with Facebook

Это три кнопки, которые входят в мой вывод, и так как мне нужно нажать на кнопку с Log in в ее тексте, который является вторым элементом в моем списке buttons[], я использую индекс 1, чтобы обозначить это, и нажимаюэто.

buttons[1].click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...