取逗号隔开的所有数据_前端爬取数据并保存成Excel的Demo

ce0c9a6df67a299fa9706bef92b00b7c.png

初衷

由于老婆是一个追求极致高效(看她工作辛苦 )工作的新媒体运营,于是请求我看能不能帮她简化流程。作为一名爱老婆的前端攻城狮,这怎么能难得到我。三下五除二(还是查了不少网上的代码,毕竟外号:代码搬运工嘛)就撸出了下面的代码。

代码解释

原本打算用后端node爬取的,但研究了一番后发现,不能满足夫人翻页的需求,于是采用前端爬取的方案,虽然多了一些体力活,但相比原先的纯手工打造还是进化了不知多少个世纪(嘿嘿 )呢! 代码中运用到了jquery,ES6的写法。

Talk is cheap, show me the code!

这个是爬取目标页:http://v.qq.com/vplus/ea1b1b8626787db2d198c58fb86eb4dc/videos 打开页面后打开console依次执行以下三步:

Step 1

// Paste the main code
const script = document.createElement("script");
script.src = "https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js";
const s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(script, s);

let arr = [],
    page = 2,
    sequence = 1;

const currentCrawl = () => {
    $('.figures_list li').each(function (index, item) {
        let title = $(this).find('strong a').text().replace(/,/g, ",").replace(/:/g, ":"),
            reading = $(this).find('.figure_info .info_inner').text(),
            time = $(this).find('.figure_info .figure_info_time').text();
        if (reading.includes('万')) {
            reading = reading.replace('万', '') * 10000;
        }
        arr.push({'id': sequence, 'title': title, 'reading': reading, 'time': time});
        sequence++;
    });
    console.log(`爬取第${page - 1}页成功,正在跳转第${page}页`);
    $('.page_next')[0].click();
    page++
};

const tableToExcel = () => {
    console.log(`正在导出数据`);
    //列标题,逗号隔开,每一个逗号就是隔开一个单元格
    let str = `序号,标题,浏览量,时间n`;
    //增加t为了不让表格显示科学计数法或者其他格式
    for (let i = 0; i < arr.length; i++) {
        for (let item in arr[i]) {
            str += `${arr[i][item]},`;
        }
        str += 'n';
    }
    //encodeURIComponent解决中文乱码
    let uri = 'data:text/csv;charset=utf-8,ufeff' + encodeURIComponent(str);
    //通过创建a标签实现
    let link = document.createElement("a");
    link.href = uri;
    //对下载的文件命名
    link.download = "数据表.csv";
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

Step 2

// Crawl the current page,and repeat this step.
//爬取当前页
currentCrawl();

Step 3

// Download the crawled data into excel.
//导出数据
tableToExcel();

注:这是一个在chrome中应用的例子,供大家参考

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值