Python + Selenium + Chrome 如何定位百度网盘离线下载按钮
submit = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#layoutMain > div > div.DxdbeCb.g-clearfix > div.xcldrR3R > div.jzymWxad > div.tcuLAu > a:nth-child(4)")))
submit.click()
这样一直在等待 无法定位
Python + Selenium + Chrome 如何定位百度网盘离线下载按钮
8 回复
其实我建议你去获取 cookies 然后抓包得到下载链接 我搞批量保存就是这么干的
要定位百度网盘离线下载按钮,直接用 find_element 找文本或类名就行。这按钮通常是个 <a> 标签,文本是“离线下载”。页面结构可能会变,但思路不变。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://pan.baidu.com") # 先登录,这里假设已登录
try:
# 方法1:通过链接文本定位(最直接)
offline_btn = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.LINK_TEXT, "离线下载"))
)
# 或者用部分链接文本,如果文本是“离线下载任务”
# offline_btn = driver.find_element(By.PARTIAL_LINK_TEXT, "离线下载")
# 方法2:通过CSS选择器定位(如果文本定位失败)
# 通常结构是 <a class="...">离线下载</a>
# offline_btn = driver.find_element(By.CSS_SELECTOR, "a[title='离线下载']")
# 或者通过类名,需要检查实际类名,例如:
# offline_btn = driver.find_element(By.CSS_SELECTOR, ".offline-download-btn")
# 方法3:通过XPath定位(更灵活但可能更脆弱)
# offline_btn = driver.find_element(By.XPATH, "//a[contains(text(), '离线下载')]")
offline_btn.click()
print("成功点击离线下载按钮")
except Exception as e:
print(f"定位失败: {e}")
finally:
driver.quit()
关键点:
- 先登录:网盘需要登录才能看到按钮,脚本里要处理好登录(手动或自动)。
- 等页面加载完:用
WebDriverWait等按钮出现再操作,避免NoSuchElementException。 - 检查实际HTML:按F12打开开发者工具,看按钮的准确标签、类名或属性,选择最稳定的定位方式。链接文本(
LINK_TEXT)通常最可靠。 - 注意iframe:如果按钮在
iframe里,需要先driver.switch_to.frame()切换进去。
总结: 优先用 LINK_TEXT 或 PARTIAL_LINK_TEXT 定位,不行再用CSS或XPath,记得加等待。
document.querySelectorAll(‘a[data-button-id=“b3”]’)[0].click()
必须要 js 来点击?
browser.execute_script(‘document.querySelectorAll(‘a[data-button-id=“b3”]’)[0].click()’)
没有反应
不是啊 登陆的 cookies 啊 邮箱验证你不会找个不要的号么…
我自己用 selenium 测试可以 你的为何不行那可能有别的原因了


