gpt4 book ai didi

python - selenium with python - 通过跳过特定的 html 类自动点击元素

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:06 27 4
gpt4 key购买 nike

它只是一个简单的点击元素的爬虫。它工作得很好,但我需要最后一个功能 - 跳过特定的 html 类。

脚本获取元素然后喜欢它然后转到下一个。这是代码:

for i in range(len(driver.find_elements_by_class_name("upvote"))):
driver.find_elements_by_class_name("upvote")[i].click()
print("Liked media.")
time.sleep(8)

这个 for 循环找到我想要的类“upvote”,然后点击它。这是正确的,但是当我已经喜欢一些元素时,我的脚本再次喜欢它并且 == 不喜欢。已经喜欢的媒体具有“upvote active”类。

完整代码如下:

from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.keys import Keys
import time

options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome()

accountActive = "xxxxxx"

driver.get('https://www.example.com/User/Login?ReturnUrl=%2FProfile')
time.sleep(3)
print("Trying to login as " + accountActive)

account = driver.find_element_by_id("Email")
account.clear() #clear input
account.send_keys("xxxx")
#elem.send_keys(Keys.RETURN)


passwd = driver.find_element_by_id("Password")
passwd.clear() #clear input
passwd.send_keys("xxxx")
passwd.send_keys(Keys.RETURN)
print("Login successfull.")
time.sleep(3)


print("Getting xxxx.")
driver.get("https://www.exaple.com/Codes/")
time.sleep(3)


print("xxxx.")
driver.get("https://example.com/Codes?ordering=MostRecent&language=")
time.sleep(3)


j=0
while j<5:
for i in range(len(driver.find_elements_by_class_name("upvote"))):
driver.find_elements_by_class_name("upvote")[i].click()
print("Liked media.")
time.sleep(8)

driver.find_elements_by_tag_name("a")[93].click()
time.sleep(10)
j+=1

最佳答案

您可以只获取所需节点的列表并处理它们,而不是获取包含所有节点的列表然后忽略不需要的节点:

for element in driver.find_elements_by_xpath("//*[contains(@class, 'upvote') and not(contains(@class, 'active'))]"):
element.click()

关于python - selenium with python - 通过跳过特定的 html 类自动点击元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51595892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com