初学nodejs爬虫实现wordpress自动迁移HEXO

这是我为了将一个wordpress博客的文章迁移到HEXO,定制编写的爬虫。

放出来方便所有迁移博客的小伙伴们使用——不仅仅适用于wordpress哦!

爬虫功能

爬虫实现了抓取指定文章页面内容+图片抓取回本地+内容图片地址更新+生成本地markdown文件 等需求。

采用nodejs 配合模块:async + fs + request + url + 其他

思路

其实爬虫的制作,思路大同小异,哦,应该说是小爬虫的设计思路大同小异,那些用算法和自动筛选的大神作品不在讨论范围~ ( 因为看都看不懂 ( ╯□╰ ) )

准备工作

  1. 确定目标博客的文章归档页面链接结构

  2. 确定归档页面文章链接的DOM结构(便于制定节点进行抓取)

  3. 确定文章正文所在DOM节点

  4. 文章内容所包含的图片链接结构及标签

  5. 本地新建文件夹以存储拉取的资源

设计思想

① 定义归档页面地址及地址范围,如 page = 1~22 ,循环请求归档页面地址superagent
② 从①数组中归档页地址进入,循环获取该页面的所有文章链接,存入文章地址数组
③ 从文章数组元素链接进入,循环获取文章正文内容及其他信息,同样存储到数组
④ 将文章正文数组中每个元素提取出来,筛选本站图片并拉取到本地重命名,替换content中的图片地址,生成为markdown文件
⑤ 完成。

以上,对需求和实现步骤清晰之后,爬虫的编写就有章可循了。

对了,在网络上看到了很多篇相类似的wordpress爬虫文章,要么内容太晦涩看不懂,要么水平不高不理解,更多的是坑,贴出来的代码断断续续的,根本无法连接起来使用,甚至运行有错误。

因此,我也不准备贴代码,直接提供源文件,随时可查看到我对该爬虫的更新和修复。

coding·下载爬虫app3.js

亮点

  1. 实现并发数控制,避免同一时间请求数过高造成服务器的过载或宕机;

  2. 图片资源拉取,省心省力,不用去手动下载;

  3. 本地文件生成,自动完成的markdown,直接导入HEXO的source文件夹即可生成

  4. 高效,快速,实测比app4的脚本 完成度、工作效率 都高,可以明显感受到速度。

##缺陷:

  1. 高度依赖目标页面的html结构,即DOM树,一旦目标页面更新,爬虫即失效。

  2. 未定义http请求类型,未定义header信息,在网站访问日志中一眼就看出来。

  3. 没有拉取CSS和JS文件资源,仅简单提取正文的所有内容,没有进行标签筛选。

特别说明:该爬虫是我经过2天的nodejs爬虫学习之后写出来的,如有疏漏之处,还请大神帮忙改正,以方便更多的朋友轻松迁移博客!

写得好!朕重重有赏!