我想从一个按钮获取“ data-href”链接。我已经使用了Selenium。我可以成功输入所需的页面,但是当我尝试从按钮获取链接时没有任何反应,但是抛出了selenium.common.exceptions.NoSuchElementException异常: 我不知道我要去哪里错了。 我的HTML:
<div class="lecture-attachment lecture-attachment-type-audio"
id="lecture-attachment-7274677">
<div class="attachment-data"></div>
<div class="audioloader" data-audioloader="AttachmentDrop" data-
audioloader-name="ESLPod1103.mp3" data-audioloader-type="audio/mpeg"
data-audioloader-
url="https://www.filepicker.io/api/file/Ius016cNTJmPRjUuCCp7" data-
audioloader-initialized="true">
<div class="audioloader__placeholder">
<button data-
href="https://www.filepicker.io/api/file/Ius016cNTJmPRjUuCCp7"
target="_blank" style="
border: 0;
outline: 0;
background: transparent;
cursor: pointer;
">
<span class="audioloader__icon glyphicon glyphicon-play"></span>
<span class="audioloader__name">ESLPod1103.mp3</span>
</button>
</div>
</div>
</div>
Python代码
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException, \
WebDriverException
driver = webdriver.Chrome(executable_path='/Users/lmuser/chromedriver')
driver.get ("https://sso.teachable.com/secure/147717/users/sign_in?
clean_login=true&reset_purchase_session=1")
driver.find_element_by_id("user_email").send_keys("***")
driver.find_element_by_id("user_password").send_keys("***")
driver.find_element_by_name("commit").click()
driver.get("https://tv.eslpod.com/courses/239156/lectures/3732329")
for i in driver.find_elements_by_xpath('//*[@id="lecture-attachment-
7274677"]/div[2]/div/button'):
print(i.get_attribute("data-href"))
答案 0 :(得分:1)
请确保每次执行脚本时html结构中的数字7274677
都没有改变。
如果它没有改变,请尝试使用xpath:
driver.find_elements_by_xpath("//div[@id='lecture-attachment-7274677']//button")
如果更改,请尝试使用xpath:
driver.find_elements_by_xpath("//div[contains(@id,'lecture-attachment')]//button")