第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

最簡(jiǎn)單易懂的node爬蟲教程

標(biāo)簽:
Node.js

最近了解了一下node实现网络爬虫的知识。于是我借鉴吸收之后,决定用request工具和cheerio,结合比较新的async异步语法,写了个浅显易懂的node-demo,供大家一起学习交流。
建议阅读本篇文章的同时,把这个demo克隆下来,更易于理解本文。
其实用node实现爬虫的基本原理很简单,就是通过request异步请求网页文件,然后再用cheerio解析这个文件的内容,然后根据自己所需爬取内容,最后借助node将爬取内容的结果封装成自己需要的形式,如json格式。

介绍一下request和cheerio这两个工具和async语法。

request是当前最简单的http请求工具,只需要简单的语句和配置就可以发送一个http请求,它的功能很强大,基本可以满足你所有的http功能的需求。这里使用的是bluebird开发的http-promise工具,它和request的区别是,使用request请求的响应结果是在它的回调函数里面,而http-promise的响应结果是以一个promise对象返回,这有利于async语句的书写,其他的,两者一样。
cheerio被称为是node端的jQuery,它可以把html文档解析成dom树的形式,然后使用类似于jQuery的元素选择器语法来选取元素。具体语法可以参见我的代码。
async是最新的也被认为是终极的js异步编程方式,如果对它还不熟悉,可以移步我的另一篇文章

再写一个获取文章详情的接口,访问路径为'/detail?path=关键字':

app.get('/detail', async (req, res) => {  let result = await request(URI + req.query.path)  let data = {}  let element = $('.content-inner .answer', result)//解析网页的指定元素
  data.avatar_url = $('.meta img.avatar', element).attr('src')//获取头像url
  data.author = $('.meta .author', element).text()//获取作者
  data.bio = $('.meta .bio', element).text()//获取作者签名
  data.content = $('.content', element).text()//获取文章内容
  res.send(data)//返回data给前台})

最后启动服务:

app.listen(8001, () => {//启动一个8001端口的server服务
  console.log('Listening on port 8001')
})

项目启动后,访问http://localhost:8001即可看到接口返回的数据

image.png



作者:会飞小超人
链接:https://www.jianshu.com/p/840ddf5020fa


點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消