Tinder 刷卡机器人不会刷卡多次

问题描述 投票:0回答:1

我正在尝试完成 Udemy 课程“100 Days of Code: The Complete Python Pro Bootcamp”中的项目“Tinder swiping bot”。然而,登录 Tinder 网站后,我无法执行更多操作。元素的 XPath 是否可能随着每张新图片的显示而改变?我尝试使用 CSS 选择器和类来查看是否可以选择“赞”按钮,但还没有成功。

这是我的代码:

from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException

#Entering the website
website_url = "https://tinder.com/"
driver = webdriver.Chrome()
driver.get(website_url)
# use delay function to get all tags
driver.implicitly_wait(20)

# Clicking on sign in button
tinder_login_button = driver.find_element(By.XPATH, '//*[@id="q1434999767"]/div/div[1]/div/main/div[1]/div/div/div/div/header/div/div[2]/div[2]/a/div[2]/div[2]') #'//*[@id="c1606223767"]/div/div[1]/div/main/div[1]/div/div/div/div/header/div/div[2]/div[2]/a/div[2]/div[2]')
tinder_login_button.click()
sleep(4)
.
.
#login into tinder website using facebook
.
.

#click I accept cookies button
iaccept_button = driver.find_element(By.XPATH, '//*[@id="q1434999767"]/div/div[2]/div/div/div[1]/div[1]/button') #'//*[@id="c1606223767"]/div/div[2]/div/div/div[1]/div[1]/button/div[2]/div[2]')
iaccept_button.click()
sleep(5)

#like button
for n in range(100):
    sleep(5)
    try:
        like_button = driver.find_element(By.XPATH, '//*[@id="q1434999767"]/div/div[1]/div/main/div[1]/div/div/div[1]/div[1]/div/div[4]/div/div[4]/button')
        like_button.click()
    except NoSuchElementException:
        sleep(5)

我尝试使用 CSS 选择器和 ID 来查看是否可以选择“点赞”按钮,我发现每次打开网站时这些元素都会发生变化,元素的 XPath 是否可能会随着显示的每张新图片而变化?

python selenium-webdriver tinder
1个回答
0
投票

我可以看到您正在使用 XPATH id。据我所知,大多数网站都尝试使用动态 ID 来减少机器人。我建议使用 By.CSS_SELECTOR。你可以有这样的东西:

driver.find_element(By.CSS_SELECTOR, value="tagname[attribname='value']"

我也推荐这条线

iaccept_button = driver.find_element(By.XPATH, '//[@id="q1434999767"]/div/div[2]/div/div/div[1]/div[1]/button') #' //[@id="c1606223767"]/div/div[2]/div/div/div[1]/div[1]/button/div[2]/div[2]')" iaccept_button.click()

你可以去掉变量名并在最后调用 .click()

driver.find_element(By.XPATH, '//[@id="q1434999767"]/div/div[2]/div/div/div[1]/div[1]/button') #'// [@id="c1606223767"]/div/div[2]/div/div/div[1]/div[1]/button/div[2]/div[2]')".click()

© www.soinside.com 2019 - 2024. All rights reserved.