如何用Python+Selenium模拟点击Pinterest关注按钮?定位无效求方案
解决Pinterest关注按钮定位失败的方案
你当前用的CSS选择器全是Pinterest动态生成的随机类名,每次页面加载这些类名都会变动,所以定位肯定不稳定,给你几个靠谱的解决方法:
方法1:用稳定的属性定位(推荐)
Pinterest的关注按钮会自带aria-label属性,里面包含与“关注”相关的文本(你提供的波兰语页面里是Obserwuj),用这个属性定位比随机类名可靠得多。
代码示例(Xpath版本)
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 用显式等待代替time.sleep,确保按钮加载完成且可点击 follow_btn = WebDriverWait(browser, 10).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(@aria-label, 'Obserwuj')]")) ) follow_btn.click()
代码示例(CSS选择器版本)
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC follow_btn = WebDriverWait(browser, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label*='Obserwuj']")) ) follow_btn.click()
方法2:直接用JavaScript查找并点击
如果上面的方法还是不行,可以直接通过JS遍历页面按钮,找到包含关注文本的按钮并触发点击:
browser.execute_script(""" const buttons = document.querySelectorAll('button'); for (const btn of buttons) { if (btn.textContent.trim().includes('Obserwuj')) { btn.click(); break; } } """)
注意事项
- 别用
time.sleep,改用WebDriverWait显式等待,能适配不同的页面加载速度,避免因加载慢导致的定位失败。 - 如果是英文页面,把代码里的
Obserwuj替换成Follow即可。
内容的提问来源于stack exchange,提问作者dxUser
相关产品推荐
相关产品推荐

