用于创建 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的主要内容,如果未能解决你的问题,请参考以下文章