Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
selenium python用于创建instagram登录liker机器人_Python_Selenium_Instagram - Fatal编程技术网

selenium python用于创建instagram登录liker机器人

selenium python用于创建instagram登录liker机器人,python,selenium,instagram,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=

我正在使用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()

无法登录的原因是您的代码无法通过指定的xpath找到
元素。这可能是因为您提供的xpath不受支持

我找到了一个解决方法,使用函数
find_elements\u 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
这将打印所有按钮的
文本
字段: 输出:

Show
Log in
Log in with Facebook
这是我的输出中的三个按钮,由于我必须在其文本中单击带有
登录
的按钮,这是我列表
按钮[]
中的第二个元素,因此我使用索引1表示并单击它

buttons[1].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]/按钮一起工作。非常感谢!所以我现在的问题是,在登录后绕过帐户验证,有什么想法吗?您好,谢谢您的回答,但它仍然没有登录,它所做的唯一事情是显示(取消隐藏)密码。@AlexandreBaptista这是因为您案例中的按钮迭代与我的不同。我已经更新了我的答案,以便您可以找到要单击的按钮。请查收