我正在做一个网络爬行器,我正在抓取的网站在页面上有一个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
属性,这样我就可以将数据转换为有用的数据。
我已经设法使用周围的WebElement的id和标记名script
选择了正确的元素作为Selenium div,但是现在我遇到了麻烦。
有没有办法使用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;")
如上段所述。
发布于 2017-11-16 11:20:09
您应该能够使用XPath根据其内容查找SCRIPT
标记
script_text = driver.find_element_by_xpath("//script[contains(.,'mpr-graph')]").text
如果由于某些原因不够具体(多个图形标记包含“mpr- SCRIPT
”),则可以将其调整为在SCRIPT
标记中唯一的任何文本。
https://stackoverflow.com/questions/47319965
复制相似问题