一个简单的node爬虫踩坑之路准备工作
最近在看爬虫相关的文章,偶然想起来尝试一下用node来实现一个简单的爬虫。但是爬别的多没意思,当然是爬美女图片啊。。。
这大概 node 里面造的最多的轮子了。
于是,我选取了下面的地址:美女图片戳我,简单分析后,我的目标是通过爬取首页的轮播图,然后爬取轮播图的直链后面的详情大图,并按照图片名称存到指定的文件夹中。
大致流程是下面这个样子的:
看起来挺简单的,选用的技术方案是:
: 请求库
: 创建文件夹
: 控制并发请求
: Dom操作库
: 内置核心文件读写库
最终的效果
源码:
划重点
1.当爬取网页编码为 的网页的时候,爬到的内容中文显示是乱码
这个问题的原因其实是挺清晰的,就是网页编码与本地编码不一致或不支持引起的。以为只是个小问题,但是在找解决办法的时候却纠结了我很久,查询了网上相关资料,有说使用 解码一下就可以,然并卵,有说使用encoding的,其实也没用。其实最后查阅资料得出的原因是,只支持utf-8的编码,如果需要支持其他的需要引用一个官方的库:,使用方法如下:
如此,即可正常返回中文
2. 异步操作用 async 来控制
对于下载图片,访问 url 这样存在异步的操作,如果操作对后面程序的执行有影响,最好使用 库来控制异步流程,类似的还有 。
下面是一个使用来来控制请求队列的官网示例,
其实官网有好多栗子,近期还会抽时间好好研究一下类似异步流程库的具体实现。
3. 404错误。获取不到资源
这个其实还好,主要是网站为了防爬的措施,可以尝试一下方法来试试看:
设置
降低请求的并发量
更换IP
总结
虽然只是一个简单的爬虫,但是发现自己对于 这种的异步流程还不是很熟悉,这点需要重点掌握。
另外,从爬虫的角度来说,node现在的库已经很完善了,还有 , 这种操作更6的库存在,掌握一门工具很容易,更重要的是要学会制作工具。
最后,练习爬虫只是出于对技术的热爱,莫要乱爬。
领取专属 10元无门槛券
私享最新 技术干货