我遇到的情况是我正在使用CasperJS打开一个页面。
有问题的页面有一些Javascript(内联和外部的组合),可以从文档中删除几个HTML元素。
但是,我希望能够在删除这些元素之前在CasperJS中使用类似getElementsByXPath()的东西来检索这些元素。这可能吗?
当我转储getPageContent()的值时,元素不在那里。但是,如果我在调用页面之前设置casper.page.settings.javascriptEnabled = false;
,getPageContent() 现在会在执行任何 Javascript 之前显示原始 HTML,并且缺少的 HTML 标记就在那里。但是,现在的问题是禁用Javascript会阻止evaluate()
的任何使用,因此我仍然无法检索元素。我可能可以在原始内容上使用某种正则表达式来做到这一点,但我希望有一种更干净的方法来做到这一点。
欢迎任何建议!
我从来没有听说过有人这样做。 我不会说使用正则表达式是一个坏主意。 我通常使用casperjs xpath和python正则表达式的组合,它的效果非常好,我个人认为这并不比在页面加载之前尝试拦截JavaScript更混乱。
话虽如此,casperjs 允许你注入 JavaScript,如果它在你请求的页面上可用,你可以使用 jquery。 下面的代码在加载任何内容之前触发。您实际上必须不遗余力地添加代码以防止在页面加载之前触发。
<script type='text/javascript'>
alert("Stop that parsing!");
</script>