Selenium Python用于创建instagram登录喜欢机器人

时间:2019-02-28 12:31:02

标签: python selenium instagram

我正在使用selenium for python为instagram创建一个简单的Liker机器人。想法是喜欢标记的第一张照片(在此示例中为“日落”)。它可以正确选择第一张照片,但不会插入喜欢的照片。

代码如下:

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 :(得分:0)

之所以无法登录,是因为您的代码无法找到您指定的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[]中的第二个元素,因此我使用了index 1表示它,然后单击它。

buttons[1].click()