javascript - 使用 Selenium 从脚本元素中获取 "text"

标签 javascript python selenium

我正在开发网络抓取工具,我正在抓取的网站在页面上有一个 script 元素,如下所示:

<script type="text/javascript">
                        jQuery(window).load(function($) {
                        Morris.Line({
                          element: 'mpr-graph',
                          data: [
                            {'date': '25-04-2017','y':'1.05'},
                            {'date': '25-04-2017','y':'1.50'},
                            ...

我想要的:

我想获取传递给 Morris.Line 的对象的 data 属性,以便我可以将数据变成可用的东西。

我已经设法使用周围的 div 的 id 和标签名称 script 选择了正确的元素作为 Selenium WebElement,但现在我被卡住了。

有没有办法使用 Selenium 获取脚本元素的文本? text 属性为空,因为它只返回给定元素在页面上显示的文本。

我尝试过的:

由于我能够通过获取元素的文本属性在浏览器控制台中获取文本,所以我尝试使用 execute_script

script_text = driver.execute_script("return document.getElementById('avg').getElementsByTagName('script');")

这将返回一个 WebElement,所以我们回到方 block 1,但至少我们知道它在工作,所以我们可以继续:

script_text = driver.execute_script("return document.getElementById('avg').getElementsByTagName('script').text;")

我认为这可能会起作用,因为它可以在浏览器控制台中运行,但 Selenium 什么都不返回。

script_text = driver.execute_script("return document.getElementById('avg').getElementsByTagName('script').innerHTML;")

如上。

最佳答案

您应该能够使用 XPath 找到 SCRIPT基于其内容的标记

script_text = driver.find_element_by_xpath("//script[contains(.,'mpr-graph')]").text

如果出于某种原因不够具体(不止一个 SCRIPT 标签包含“mpr-graph”),那么您可以将其调整为 SCRIPT 中唯一的任何文本。标签。

关于javascript - 使用 Selenium 从脚本元素中获取 "text",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47319965/

相关文章:

python - 如何使用 Selenium 在非安全页面上绕过消息 -"your connection is not private"?

javascript - 如何一个接一个地同时点击页面上的所有按钮?

javascript - 成功更改 JS 中的不可变或原始数据类型。那么这些是原语还是 JS 概念是错误的?

python - 从字典列表中删除重复项

python - 即使答案错误,Python 的分数也会增加

java - java中使用Selenium自动上传图像到instagram

selenium - 如何在 selenium 中自动更新 chromeDriver 和 geckDriver

javascript - Mongoose 选择子文档字段

javascript - 如何检查fancybox打开与否

python - 使用 setuid/setgid 包装器执行 Python 命令