我正在使用网络抓取工具,而我正在抓取的网站在页面上有一个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;")
如上所述。
答案 0 :(得分:0)
您应该能够使用XPath根据其内容找到SCRIPT
标记
script_text = driver.find_element_by_xpath("//script[contains(.,'mpr-graph')]").text
如果由于某种原因不够具体(多个SCRIPT
标记包含“mpr-graph”),那么您可以将其调整为SCRIPT
标记中唯一的文本。