美文网首页
前端视角通过selenium实现爬虫技术(node方向)

前端视角通过selenium实现爬虫技术(node方向)

作者: 祝家庄打烊 | 来源:发表于2022-04-22 22:42 被阅读0次

    之前有介绍过selenium-webdriver是基于浏览器自动化库,可以模拟用户的行为操作。利用这个自动化库可以开发两个大方向的功能,爬虫和自动化测试。今天的话,我们来讲解一下爬虫技术,这里特别注意:爬虫有风险开发需谨慎。

    爬虫的介绍

    爬虫是通过程序来获取网络资源,可以通过定时器定时的去爬取网络资源,而不是通过人为的方式去爬取资源。大家常用的搜索引擎就是由很多很多爬虫组成,每个爬虫都会去网络上爬取资源存储自己的数据库中供用户搜索。我们今天来讲解一个分页列表,分为2个步骤:1、模拟用户登录 2、获取列表数据

    模拟用户操作

    1、打开登录页面,模拟用户输入账户和密码,点击登录按钮跳转到首页

    await driver.get('http://localhost:8080/#/login');
        await driver.findElement(By.xpath('//*[@id="app"]/div/div/div[1]/input')).sendKeys('123456',Key.RETURN);
        await driver.findElement(By.xpath('//*[@id="app"]/div/div/div[2]/input')).sendKeys('123456',Key.RETURN);
        await driver.findElement(By.xpath('//*[@id="app"]/div/div/button')).click();
    

    2、模拟用户行为操作页面,使其到达想要爬取的列表页面

    await driver.findElement(By.id('detail')).click();
    

    3、获取列表当前页数据,当前页数据获取完成后模拟用户点击下一页,这样依次获取数据,直到数据全部获取完成。注意:一、可以通过获取分页总数,进行遍历来获取数据 二、通过点击下一页获取数据,直到下一页无法在点击,说明已经到最后一页

    let ul = await driver.findElement(By.xpath('//*[@id="app"]/div/div[2]/ul'));
    let uiItem = await ul.findElements(By.css('.number'));
    let maxPage = await uiItem[uiItem.length-1].getText();
    for(var i=1;i<maxPage;i++){
      let cItem = await driver.findElements(By.css('.el-table__row'));
      for(var k=0;k<cItem.length;k++){
        let c = await cItem[k].findElements(By.css('.cell'));
        let cDate = await c[0].getText();
        let cName = await c[1].getText();
        let cAddress = await c[2].getText();
        await writeSteam.write(`时间:${cDate} 名字:${cName} 地址:${cAddress}`);
        await writeSteam.write('\r\n');
       }
       await driver.sleep(1000);
       await driver.findElement(By.xpath('//*[@id="app"]/div/div[2]/button[2]')).click();
    }
    writeSteam.close();
    

    相关文章

      网友评论

          本文标题:前端视角通过selenium实现爬虫技术(node方向)

          本文链接:https://www.haomeiwen.com/subject/nnfoertx.html