使用Selenium从脚本元素获取“文本”

2024-06-17 09:08:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个web scraper,我正在抓取的站点在页面上有一个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属性为空,因为它只返回页面上为给定元素显示的文本。在

我的尝试:

因为我可以通过获取元素的text属性在浏览器控制台中获取文本,所以我尝试使用execute_script。在

^{pr2}$

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

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;")

同上。在


Tags: 数据text文本元素executedatadate属性
1条回答
网友
1楼 · 发布于 2024-06-17 09:08:04

您应该能够使用XPath根据其内容查找SCRIPT标记

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

如果由于某些原因不够具体(不止一个SCRIPT标记包含“mpr graph”),那么可以将其调整为SCRIPT标记中唯一的文本。在

相关问题 更多 >