用于创建 instagram 登录 liker bot 的 selenium python

Posted

技术标签:

【中文标题】用于创建 instagram 登录 liker bot 的 selenium python【英文标题】:selenium python for creating a instagram login liker bot 【发布时间】:2019-02-28 12:31:01 【问题描述】:

我正在使用 selenium for python 为 instagram 创建一个简单的liker bot。这个想法是喜欢标签的第一张照片(在这个例子中是“日落”)。它正确选择了第一张照片,但没有插入点赞。

代码如下:

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()

【问题讨论】:

您是否尝试过使用开发控制台获取登录按钮的 xpath? //*[@id="react-root"]/section/main/div/article/div/div[1]/div/form/div[3]/button 点击登录按钮后页面加载过程中能否请您等待特定元素? 当它尝试登录时会发生什么?你得到一个错误或?如果是这样,请编辑您的问题并添加完整的错误消息。 它与 "//*[@id="react-root"]/section/main/div/article/div/div[1]/div/form/div[3]/ 一起使用按钮”非常感谢! 所以我现在的问题是在登录后绕过帐户验证,有什么想法吗? 【参考方案1】:

您无法登录的原因是您的代码无法找到您指定的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()

【讨论】:

您好,谢谢您的回答,但它仍然无法登录,唯一的作用就是显示(取消隐藏)密码。 @AlexandreBaptista 这是因为您的情况下的按钮迭代与我的情况不同。我已经更新了我的答案,以便您可以找到要单击的按钮。请检查

以上是关于用于创建 instagram 登录 liker bot 的 selenium python的主要内容,如果未能解决你的问题,请参考以下文章

无需登录即可获取 Instagram 访问令牌

Instagram iPhone应用问题

C# selenium instagram 登录问题

instagram怎么爬梯子

我的 Instagram 自动化代码没有将用户名和密码填入登录页面

Flutter:登录 Instagram 时未获取代码(Instagram 登录不起作用)