python - 改变 XPath 来提取文本 Selenium

标签 python selenium xpath web-scraping

此 HTML block :

<td class="tl-cell tl-popularity" data-tooltip="9,043,725 plays" data-tooltip-instant="">
  <div class="pop-meter">
  <div class="pop-meter-background"></div>
  <div class="pop-meter-overlay" style="width: 57%"></div>
  </div>
</td>

相当于这个 XPath:

xpath = '//*[@id="album-tracks"]/table/tbody/tr[5]/td[6]'

尝试提取文本:9,043,725 播放

find_element_by_xpath(xpath).text()

返回一个空字符串。仅当用户将鼠标悬停在 HTML block 上时才会生成此文本。

有没有办法改变 XPath,以便不返回空字符串,而是返回实际字符​​串?

最佳答案

尝试使用get_attribute反而。可以使用任何 find_elements 机制来定位预期元素。请参阅API DOC

element = browser.find_elements_by_css_selector('.tl-cell.tl-popularity')
text = element.get_attribute('data-tooltip')

关于python - 改变 XPath 来提取文本 Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29657404/

相关文章:

python - Django 管理表单覆盖默认值

python - Opencv Python 使用 Numpy 数组裁剪图像

python - 转到 python 字典中列表中的下一个索引并执行计算

python - selenium webdriver.Firefox 不为非 sudo 用户启动

node.js - 使用 WebdriverJS 选择父元素

xpath - 获取 xpath 结果集中的第一个节点

python - 如果满足条件,重命名 pandas 数据框中的列

javascript - Selenium IDE - 将 URL 字符串变量传递到条件 'gotoIf' 语句会引发语法错误?

c# - 是否存在用于两个 XmlDocuments 的 .NET XPath 'diff' 命令?

node.js - 使用 NodeJS 和 Browserstack 捕获特定元素的屏幕截图