资讯专栏INFORMATION COLUMN

puppeteer的简单使用_爬取页面信息

ARGUS / 2298人阅读

摘要:使用无头浏览器做爬虫有什么拿什么它是的一个用来操纵浏览器的的库,对的你没看错,就是操作浏览器的,细思极恐啊简单说就是浏览器有的它都有了当然有些功能也正在开发中可以注册,模拟登陆,设置操作事件,执行脚本团队对其维护,厉害了吧文档地址安装首先

使用chrome无头浏览器做爬虫 - 有什么拿什么 puppeteer
它是Node的一个用来操纵浏览器的API的库,对的你没看错,就是操作浏览器的,细思极恐啊
简单说就是浏览器有的它都有了(当然有些功能也正在开发中)
可以注册,模拟登陆,设置cookie
操作dom事件,执行js脚本
Chrome团队对其维护,厉害了吧
文档地址:https://github.com/GoogleChro...
安装
首先Nodejs 的版本不能低于 v7.6.0, 因为全都是 async, await 异步操作
npm install puppeteer -S
出现安装问题的小伙伴可以试一试npm的内置配置文件,当前目录下新建一个.npmrc结尾的文件,内容如下
registry=https://registry.npm.taobao.org
chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver
phantomjs_cdnurl=https://npm.taobao.org/dist/phantomjs
electron_mirror=https://npm.taobao.org/mirrors/electron/
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
puppeteer_download_host=https://cdn.npm.taobao.org/dist
官网的demo
const puppeteer = require("puppeteer");
(async () => {
  // 创建一个浏览器实例 Browser 对象
  const browser = await puppeteer.launch();
  // 通过浏览器实例 Browser 对象创建页面 Page 对象
  const page = await browser.newPage();
  // 通过url参数打开指定的页面
  await page.goto("https://example.com");
  // 对页面进行截图
  await page.screenshot({path: "example.png"});
  // 关闭浏览器
  await browser.close();
})();
先来个最最基本的抓取 实战_抓取2345小说站任意书籍的章节列表

两个箭头标记的

观察url,.html之前的数字就是抓取书籍的bookId

章节列表所在容器标签

上干货,都在注释里了


抓取的结果

完整代码
const puppeteer = require("puppeteer");
(async ()=>{
    try{
        // 创建一个浏览器实例 Browser 对象
        let browser = await puppeteer.launch({
            // 是否不显示浏览器, 为true则不显示
            "headless": false,
        });
        // 通过浏览器实例 Browser 对象创建页面 Page 对象
        let page = await browser.newPage();
        // 设置浏览器信息
        const UA = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 Chrome/63.0.3239.84 Safari/537.36";
        await Promise.all([
            page.setUserAgent(UA),
            // 允许运行js
            page.setJavaScriptEnabled(true),
            // 设置页面视口的大小
            page.setViewport({width: 1100, height: 1080}),
        ]);
        // 地址
        let chapter_list_url = `http://book.km.com/chapterlist/396353.html`
        // 打开章节列表
        await page.goto(chapter_list_url);
        // 使用css选择器的方式
        let content= await page.$eval("#xtopjsinfo > div.wrapper > div.container > div.catalog > div.catalog_bd", el => el.innerText);
        console.log(content);
    }catch(err){
        console.log(err)
    }
})()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107035.html

相关文章

  • puppeteer进阶版_爬取小说站

    摘要:写爬虫抓取页面是不是还需要等待页面有数据了才能抓取,那么页面渲染的这段时间虽然不长但架不住多啊是不是可以省去呢时间要好好的利用起来基础不太了解的可以参考我这篇简单使用的文章使用抓取接口拦截数据这里有小伙伴就要说了我都知道接口了直接去请求不就 写爬虫抓取页面是不是还需要等待页面有数据了才能抓取,那么页面渲染的这段时间(虽然不长但架不住多啊)是不是可以省去呢 时间要好好的利用起来 基础不太...

    qpal 评论0 收藏0
  • Puppeteer初探--爬取并生成《ES6标准入门》PDF

    摘要:首先介绍是一个库,他提供了一组用来操纵的默认也就是无的,也可以配置为有有点类似于,但是官方团队进行维护的,前景更好。使用,相当于同时具有和的能力,应用场景会非常多。 首先介绍Puppeteer Puppeteer是一个node库,他提供了一组用来操纵Chrome的API(默认headless也就是无UI的chrome,也可以配置为有UI) 有点类似于PhantomJS,但Puppet...

    JerryWangSAP 评论0 收藏0
  • puppeteer爬虫

    摘要:利用空闲时间,学习了下爬虫,我也想爬取下网上的资源部分参数名称参数类型参数说明在请求的过程中是否忽略报错信息,默认为是否以无头的模式运行,也就是不显示,默认为可执行文件的路径,默认是使用它自带的如果你想指定一个自己的路径,可以通过这个参数设 利用空闲时间,学习了下puppeteer爬虫,我也想爬取下网上的资源 1.部分api puppeteer.launch(options) 参数...

    scola666 评论0 收藏0
  • Node 批量爬取头条视频并保存

    摘要:目标网站西瓜视频项目功能下载头条号维辰财经下的最新个视频项目地址地址姊妹项目批量下载美女图集简介一般批量爬取视频或者图片的套路是,使用爬虫获得文件链接集合,然后通过等方法逐个保存文件。然而在批量下载时,逐个手动的获取视频链接显然不可取。 目标网站:西瓜视频 项目功能:下载头条号【维辰财经】下的最新20个视频 项目地址:Github 地址 姊妹项目:批量下载美女图集 简介 一般批量...

    Jioby 评论0 收藏0

发表评论

0条评论

ARGUS

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<