通过python硒获取属性的值

时间:2019-02-27 08:26:32

标签: python-3.x selenium web-scraping

我想从一个按钮获取“ 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"))

1 个答案:

答案 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")