You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CasperJS获取所有同CSS类的div文本?

嘿,作为CasperJS新手能想到用它来批量抓取同类CSS元素,真的很赞!我来一步步给你讲清楚怎么实现这个需求~

核心思路

CasperJS基于PhantomJS,我们可以借助evaluate()方法进入页面的浏览器上下文,用原生JavaScript的DOM选择器来获取所有目标元素——这是最可靠的抓取方式,因为直接操作页面DOM,和你在浏览器控制台里操作是一样的。

完整示例脚本

假设你要抓取的列表项CSS类是.list-item,下面是一个可以直接运行的完整脚本:

var casper = require('casper').create();

// 替换成你要抓取的目标网站URL
var targetUrl = 'https://example.com/your-target-page';

casper.start(targetUrl, function() {
    // 在页面上下文里执行抓取逻辑
    var listContents = this.evaluate(function() {
        // 选中所有带.list-item类的元素
        var itemElements = document.querySelectorAll('.list-item');
        
        // 把NodeList转为数组,并提取每个元素的文本内容
        return Array.prototype.map.call(itemElements, function(item) {
            // trim()去掉文本前后的空白字符,让内容更干净
            return item.textContent.trim();
        });
    });

    // 输出抓取结果
    this.echo('✅ 抓取到的列表内容:');
    listContents.forEach(function(content, index) {
        this.echo(`${index + 1}. ${content}`);
    }, this);
});

// 启动CasperJS
casper.run();

关键部分解释

  • document.querySelectorAll('.list-item'):原生JS选择器,会返回页面中所有匹配该CSS类的元素(NodeList类型)
  • Array.prototype.map.call(itemElements, ...):因为NodeList不是数组,所以我们借数组的map方法来遍历每个元素,提取文本内容
  • evaluate():这个方法是CasperJS和页面DOM之间的“桥梁”,只有在它的回调里才能直接访问页面的DOM元素,外部是做不到的

扩展:抓取元素的其他属性

如果除了文本,你还需要抓取元素的链接、图片地址等属性,只需要修改map里的返回值就行。比如每个列表项里有一个<a>标签,要抓取它的href:

return Array.prototype.map.call(itemElements, function(item) {
    var link = item.querySelector('a');
    return {
        itemText: item.textContent.trim(),
        itemLink: link ? link.getAttribute('href') : '无链接'
    };
});

新手必看注意事项

  1. 处理动态加载的页面:如果目标列表是通过JS动态渲染的,直接抓取可能会拿到空内容,这时候要加waitForSelector等待元素加载完成:
casper.start(targetUrl, function() {
    // 等待目标元素出现,超时时间设为10秒
    this.waitForSelector('.list-item', function() {
        // 这里再执行抓取逻辑
        var listContents = this.evaluate(/* 抓取函数 */);
    }, function() {
        this.echo('❌ 等待目标元素超时,请检查URL或选择器是否正确!');
    }, 10000);
});
  1. 验证页面加载状态:可以用this.capture('page-screenshot.png')生成页面截图,确认页面是否正确加载,避免因为页面跳转、反爬等问题导致抓取失败
  2. 选择器准确性:确保你的CSS类选择器是正确的,可以先在浏览器控制台里用document.querySelectorAll('.list-item')测试,看看能不能选中目标元素

内容的提问来源于stack exchange,提问作者Mehdi Alisoltani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:10:33