• 我转过几个弯 绕过那个小雨楼
  • 拿着蒲扇摆着衣衫渡着紧箍咒
  • 不问天涯不停留 喝过几壶酒
  • 不过年少白头道义放胸口
  • 倘若明天之后 遥看前尘剑封侯
  • 似那天上神仙无所求
  • 朝朝暮暮君如梦醒十分不为何理由
  • 是真是假是惶恐是无休
  • 路过这风雨花满楼 片刻都不停留
  • 我本这书生进京赶考留下许多愁
  • 你问有没有时候 我叹这天道默悠悠
  • 能否与我一醉方休
  • 又过了几个弯 算尽天量道莫慌
  • 踏这田园闻这芳草香
  • 跌跌撞撞仗剑天涯折煞不枉无笔良
  • 是梦是幻是温柔是家乡
  • 路过这风雨花满楼 片刻都不停留
  • 我本这书生进京赶考留下许多愁
  • 你问有没有时候 我叹这天道默悠悠
  • 能否与我一醉方休
  • 路过这风雨花满楼 片刻都不停留
  • 我本这书生进京赶考留下许多愁
  • 你问有没有时候 我叹这天道默悠悠
  • 能否与我一醉方休
  • 谁能与我一醉方休

koa框架 爬虫

192 0

听别人说node可以写爬虫,然后我去尝试了一下,有点累啊,大概原理其实用jq都能做出来效果,只是说没有后台操作了。

原理

  1. 利用http模块发出请求
  2. 获取到网页信息
  3. 通过cheerio插件进行提取信息
  4. 保存

遇到的一些问题

首先就是提取信息,因为获取到的其实是一个html页面的内容,我们需要进行提取,这里当然用jq会方便很多,但是node里面没有jq,只有cheerio这个伪jq,所以很多jq的方便的方法,使用这个插件用不出来。

特别是$(".box:nth-child(2)")这种选择器就无法使用,只能通过eq,和find进行截取,然后再each循环,性能上应该很浪费。

转义

有的站点他的html是转义的,我们直接通过正则去匹配的话,得到的值也只能是未转义的,而js无法将其转为中文字符,所以很头疼,最终做法是使用cheerio的方法获取dom节点,通过.text()方法或者attr()这种来进行获取。

正则行不通。

保存,如果你是存数据库,那很好说,我这里讲讲我存本地的一些问题。

我的想法是就存个本地json文件好了,反正东西也不多,存mysql就有点浪费了。

所以我使用了promise-fs模块异步读存,加上爬虫的抓取他是很快的遍历,所以会导致,上一个还没存完,第二个又来了,所以我这里建议,读存使用同步方法。

预览图

源码

这里就提供下源码了,有兴趣的可以自行下载,给自己也留个在线包方便以后用的时候直接拿。

此处内容已隐藏回复后方可阅读。

1
  • 本文分类:Node
  • 本文标签:nodekoa爬虫
  • 流行热度:已超过 192 人围观了本文
  • 最后更新:2020年09月6日 - 1时56分29秒
  • 发布日期:2020年09月6日 - 1时53分00秒
  • 版权申明:本文系作者@木灵鱼儿原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

相关文章

微信收款码
微信收款码