博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node 入门级别的爬虫(青铜)
阅读量:6624 次
发布时间:2019-06-25

本文共 2067 字,大约阅读时间需要 6 分钟。

最近在学习node, 刚好学习到了koa以及相关一些有趣的模块,废话不多说,直接上代码展示

安装相关npm包

npm i koa@latest -S //安装最新的koa包npm i superagent@latest -S // 安装最新的superagent包npm i cheerio@latset -S // 安装最新的cheerio包复制代码

新建一个index.js页面引入我们需要的包

// Koa 是一个新的 web 框架const Koa = require('koa') // SuperAgent是一个轻量级、灵活的、易读的、低学习曲线的客户端请求代理模块,使用在NodeJS环境中。const request = require('superagent')// cheerio是nodejs的抓取页面模块,为服务器特别定制的jQuery核心实现。适合各种Web爬虫程序。const cheerio = require('cheerio')// 引入 path 模块中的 join 用于拼接正确的路径const { join } = require('path')复制代码

JS处理过程

const app = new Koa() // 这里要注意我们引入的koa是一个构造函数, 需要去实例它// Koa 应用程序是一个包含一组中间件函数的对象app.use( async (ctx, next) => {    // ctx 这是 Context, 具体用法大家去看文档哈,很详细    //async next() 当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件。    const arr = [] // 创建一个数组存储我们要抓取页面的数据    const URL = "http://www.wtown.com.cn/" // 保存我们要抓取页面的地址        // 重点注意的是, request请求是一个异步,因此要把他转为一个Promise对象,等待获取完数据在返回出去    const data = new Promise( resolve => {        request        // 这里我抓取的是一个景区官网的票务信息        .get("http://www.wtown.com.cn/index.php/Reservation/Ticket/index.html")        .end( (err, res) => {            console.log(res) // 这是我们抓取到的页面整个数据            const data = res.text // 我需要的信息在text中            const $ = cheerio.load(data) // 通过 cheerio 模块转为DOM结构            // 分析页面DOM结构抓取相应的数据            $(".box ul li").each((i, v) => { // 因为获取的不止一个,所以要each遍历保存数据                const $v = $(v)                const obj = {                    // join 用于拼接正确的路径                    img: join(URL, $v.find('.ticket-left img').prop("src")),                    // // join 用于拼接正确的路径                    src: join(URL, $v.find('.ticket-right .fs24 a').prop("href")),                    text: $v.find('.ticket-right .txt').text().trim(),                    price: $v.find('.ticket-right p .fs24').text().trim(),                }                arr.push(obj)            });            resolve(arr) // 当数据都存到 arr 中以后 resolve 出去        })    })    ctx.body = data // 将我们抓取到的数据返回到页面中显示})app.listen(3000) // 这里我们监听3000端口复制代码

打开命令行找到index.js目录, 输入 node index.js 运行该文件 在浏览器打开http://localhost:3000/

结果如下

这是抓取到的票务数据, 完美

转载地址:http://zvxpo.baihongyu.com/

你可能感兴趣的文章
pku 1054 The Troublesome Frog 暴力+剪枝
查看>>
串行,并行,并发
查看>>
webservice测试工具
查看>>
Porting .Net RSA xml keys to Java
查看>>
检测 nginx.conf 是否配置正确
查看>>
最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和...
查看>>
测试妹子的呐喊:为什么总是收不到推送?
查看>>
linux NFS
查看>>
Jquery DataTable基本使用
查看>>
leetcode 674. Longest Continuous Increasing Subsequence
查看>>
Extensions in UWP Community Toolkit - SurfaceDialTextbox
查看>>
Golang 语言的单元测试和性能测试(也叫 压力测试)
查看>>
Java中CAS详解
查看>>
Java Spring MVC 错误 及 常见问题 总结
查看>>
Linux系统实战项目——sudo日志审计
查看>>
Android Application Task Activities的关系
查看>>
浅谈CSS盒子模型
查看>>
实现iFrame自适应高度,原来很简单!
查看>>
get app id
查看>>
poj 3624 0/1背包暨0/1背包的学习
查看>>