使用Selenium

时间:2017-11-16 01:12:22

标签: 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'},
                            ...

我想要的是什么:

我希望转到传递给data的对象的Morris.Line属性,以便我可以将数据转换为可用的数据。

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

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

我尝试了什么:

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

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

这会返回一个WebElement,所以我们回到了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;")

如上所述。

1 个答案:

答案 0 :(得分:0)

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

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

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