我正在开发网络抓取工具,我正在抓取的网站在页面上有一个 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/