首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Selenium从脚本元素获取“文本”

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

Stack Overflow用户
提问于 2017-11-16 09:12:22
回答 1查看 3.4K关注 0票数 3

我正在做一个网络爬行器,我正在抓取的网站在页面上有一个script元素,看起来像这样:

代码语言:javascript
复制
<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属性,这样我就可以将数据转换为有用的数据。

我已经设法使用周围的WebElement的id和标记名script选择了正确的元素作为Selenium div,但是现在我遇到了麻烦。

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

我尝试过的东西:

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

代码语言:javascript
复制
script_text = driver.execute_script("return document.getElementById('avg').getElementsByTagName('script');")

这将返回一个WebElement,所以我们回到了正方形1,但至少我们知道它是工作的,所以我们可以继续:

代码语言:javascript
复制
script_text = driver.execute_script("return document.getElementById('avg').getElementsByTagName('script').text;")

我认为这可能会起作用,因为它可以在浏览器控制台中工作,但Selenium不返回任何信息。

代码语言:javascript
复制
script_text = driver.execute_script("return document.getElementById('avg').getElementsByTagName('script').innerHTML;")

如上段所述。

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 11:20:09

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

代码语言:javascript
复制
script_text = driver.find_element_by_xpath("//script[contains(.,'mpr-graph')]").text

如果由于某些原因不够具体(多个图形标记包含“mpr- SCRIPT”),则可以将其调整为在SCRIPT标记中唯一的任何文本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47319965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档