我试图通过截取广告的屏幕截图,用CasperJS抓取一些图像(在本例中为广告)。我已经为DIV“creative_xxxxx”识别了一个唯一的ID,但到目前为止,我无法访问下面图片中的选择器或任何选择器。
选择器不在页面源上,可能是因为它们是在页面加载期间插入的,但可以在FireBug中看到:
基本上我想知道如何访问上面的选择器,或者更一般地说是任何不在原始页面源中的选择器。我认为Casper执行JavaScript使这个问题没有问题,但也许我误解了?
选择器在iFrame中,我使用了casper.withFrame(frame, function()
,但选择器似乎仍然没有。这是我试图抓住的网站:
答案 0 :(得分:1)
广告有时(通常是?)动态加载。通常,广告元素标识符是动态的,因此您需要尝试部分标识符匹配。 CSS选择器可以实现这一点:
#id_123
完全匹配id="id_123"
[id ^= "id_"]
从头开始匹配或[id *= "id_"]
匹配属性id
示例代码:
casper.withFrame(..., function(){
this.captureSelector("ad.png", "[id^='DfaVisibilityIdentifier'] > [id^='creative']");
});
请注意,PhantomJS不支持闪存。因此,基于Flash的广告将为白色或黑色。