美文网首页
爬虫应用示例--puppeteer数据抓取的实现方法(续2)

爬虫应用示例--puppeteer数据抓取的实现方法(续2)

作者: 工程师54 | 来源:发表于2021-08-16 00:18 被阅读0次

    本文是“爬虫应用示例--puppeteer数据抓取的实现方法(续1)”的后续,主要讲解了常用的几个自动化操作实现方法。

    1、打开浏览器

    await puppeteer.launch({
         ignoreHTTPSErrors:true,  //是否在导航期间忽略 HTTPS 错误. 默认是 false
          headless:false,   // 是否以无头模式运行浏览器,默认是 true
          slowMo:250,  // 将 Puppeteer 操作减少指定的毫秒数。这样你就可以看清发生了什么。在开发阶段使用此属性,在生产阶段,注销此属性,这样可以提高软件的执行效率
          timeout:0   // 等待浏览器实例启动的最长时间(以毫秒为单位),0是禁止超时
     })

    以上语句实际上是创建一个浏览器的实例,一般配置以上4个参数足够了,具体如果还需要指定更多的创建方式,可以参见这里

    如果希望异步操作,则可以去掉await。

    2、自动打开指定网页

    创建浏览器实例实际上是一个promise,成功后才可以执行自动打开指定网页等以下命令。

    await puppeteer.launch({
    。。。。。。
    }).then(async browser => {
    。。。。。
         let page = await browser.newPage();     //在打开的浏览器中新建一个标签
         await page.setJavaScriptEnabled(true); //允许js脚本
         await page.goto("https://www.baidu.com/");  //打开百度首页
    。。。。。
    });

    3、自动填写输入框

    const obj_input = await page.$("#txtCompanyName");    //找到id=txtCompanyName的input输入框
    await obj_ input .focus();            //使该输入框获得焦点
    await page.keyboard.type("华为");   //自动在该输入框内填写华为两个字

    以上是根据id定位输入框的,也可以用坐标、classname等更多方法定位。

    4、自动在下拉框中选择指定项

    await page.waitFor('#drpQualificateLevel');  //id= drpQualificateLevel的select组件中数据全部加载完毕
    await page.select('#drpQualificateLevel','11');  //自动选择该select中value=11的选择项

    5、自动点击指定命令按钮

    let btnSearch = await page.$("#btnSearch");    //找到id=btnSearch的命令按钮
    await btnSearch.click();    //自动单击该命令按钮
    await page.waitForNavigation() ; //确保以上单击事件执行完成,这个语句如果没有,在单击命令刷新页面时,后续获取数据可能取不到,或者获取不完整

    6、自动提取表格中的数据

    await page.waitFor('#dgDwList');    //等待id=dgDwList的table中的数据全部加载完毕
    let data1 = await page.$$eval('#dgDwList tr', tds => tds.map((tr) => { return tr.innerText.split('\t'); })); //将table中数据全部提取出来放到变量data1中

    7、自动点击指定超级链接

    let btnNext = await page.$("#btnNext");   //定位id= btnNext的超级链接<a id='btnNext' .....  />
    await btnNext.click();   //自动点击该超级链接
    await page.waitForNavigation() ;   //确保页面刷新完成

    这个命令await page.$eval("#btnNext",obj => obj.href);可以获取超级链接的href值。

    8、自动关闭浏览器

    await browser.close();

    puppeteer功能非常强大,以此为基础实现一个RPA,可以满足大部分的自动化要求。

    相关文章

      网友评论

          本文标题:爬虫应用示例--puppeteer数据抓取的实现方法(续2)

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