Selenium爬取拉勾网数据写入execl

教程是看黑马的进阶课程,只是一个学习的小demo,目的是最近在找工作就顺便爬一些数据看看,分页功能没做,分页其实就是获取总页数,然后获取点击下一页的元素,循环调用爬取函数即可。

const { Builder, By, Key } = require('selenium-webdriver');
require('chromedriver');
var xlsx = require('node-xlsx');
var fs = require('fs');

(async function start() {
    //excel数据
    var excelData = [];
    let driver = await new Builder().forBrowser('chrome').build();

    try{
        await driver.get('https://www.lagou.com/');
        await driver.findElement(By.css('#changeCityBox .checkTips .tab.focus')).click();
        await driver.findElement(By.id('search_input')).sendKeys('前端', Key.ENTER);
        let items = await driver.findElements(By.className('con_list_item'))
        console.log('请等待......')
        for(let i=0;i<items.length;i++){
            // 获取岗位名称
            let title = await items[i].findElement(By.css('.p_top h3')).getText()
            // 获取工作地点
            let position = await items[i].findElement(By.css('.p_top em')).getText()
            // 获取发布时间
            let time = await items[i].findElement(By.css('.p_top .format-time')).getText()
            // 获取公司名称
            let companyName = await items[i].findElement(By.css('.company .company_name')).getText()
            // 获取公司所在行业
            let industry = await items[i].findElement(By.css('.company .industry')).getText()
            // 获取薪资待遇
            let money = await items[i].findElement(By.css('.p_bot .money')).getText()
            // 获取需求背景
            let background = await items[i].findElement(By.css('.p_bot .li_b_l')).getText()
            // 处理需求背景
            background = background.replace(money, '')
            excelData.push([title, position, time, companyName, industry, money, background])
        }
        console.log('爬取完成')
        var data = [
            {
                name : 'sheet1',
                data : [
                    [
                        '职位',
                        '工作地',
                        '发布时间',
                        '公司名称',
                        '简介',
                        '薪资',
                        '要求'
                    ]
                ]
            }
        ]
        for(let i=0;i<excelData.length;i++){
            data[0].data.push(excelData[i])
        }
        // 写xlsx
        var buffer = xlsx.build(data);
        fs.writeFile('./result.xls', buffer, function (err)
        {
            if (err)
                throw err;
            console.log('Write to xls has finished');
        })
    }
    finally{
        await driver.quit();
    }

  })();

只爬取了一页数据
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值