CasperJS按类获取元素的innerHTML

时间:2015-05-27 15:00:52

标签: javascript xpath web-scraping casperjs

我是CasperJS的新手,我有一些问题从<p class="city">Data I Need</p>获取innerHTML

我尝试了一些事情,但似乎没有任何事情可以解决。

var city_name= casper.evaluate(".//*[@class='city_name']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
var friend_username = city_name.innerHTML;

var city_name = this.evaluate(function() {
    return document.querySelector(".//*[@class='city_name']").innerHtml;
});

2 个答案:

答案 0 :(得分:8)

CasperJS默认使用CSS选择器:

var city_name = casper.evaluate(function() {
    return document.querySelector(".city_name").innerHTML;
});

请注意,该属性为innerHTML而不是innerHtml。另请注意,casper.evaluate()是页面上下文的界面,与document.evaluate()无关。

您当然可以使用带有CasperJS实用程序的XPath表达式。像casper.getElementInfo()这样的函数为您提供了一些其他属性,例如html,它实际上是相应DOM元素上的innerHTML属性。

var x = require("casper").selectXPath;
...
var city_name = casper.getElementInfo(x(".//*[@class='city_name']")).html;

答案 1 :(得分:0)

对我来说,我喜欢使用casper的getElementInfo()方法:

casper.getElementInfo('<insert CSS selector>').html

或者在我的情况下,我想要内部文本:

casper.getElementInfo('<insert CSS selector>').text