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