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