Skip to content

M-Nemo/meizitu-crawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

meizitu-crawler

A Node.js crawler

Build Setup

# install dependencies
npm install

# serve run
node index.js

学习NodeJS的第一站,第一次自己尝试写个爬虫,说实话,自己都嫌弃写的垃圾,后续应该还会慢慢重写吧,也希望dalao们不要笑话啦。


前几天自己随便刷网站,偶遇了这个一大堆妹纸图片的网站 http://www.mzitu.com/ 不讨论图片的质量),看了一下网站结构,发现还是挺简单的,就萌发了自己爬一下图片的念头。

开始动手,翻了一些前辈们的博客和GitHub,就有了以上的代码,当然,以上的代码并不是第一个版本。

思路:

  1. 先爬个100页的相册的链接,结构很简单,从http://www.mzitu.com/page/1http://www.mzitu.com/page/100
  2. 拿到每一页里面所有相册的链接,存下来
  3. 拿到所有相册的链接后发起get请求,拿到相册里包含的照片的数目和相册里面照片的链接,再次请求这些链接,把图片下载下来写到文件夹。

思路有了,简单粗暴开始搞,起初的时候并没有考虑的异步问题,直接写了三个函数,想着一个个地跑,然后很显然,输出的结果全部为空,才想起来回调函数全部都是异步地调用的。很好,有办法了,嵌套调用,嵌套了两层闭包,三层回调, 大家不要这么干,写出来的代码我自己都不知道是个啥,当然,跑起来了,先测试了一下3页图片,恩,问题不大,全下载下来了,十分激动,直接100页走起。。然后。。又挂了,下载下来的图片要么是无效图片,要么就是自带马赛克。思考了一下,会不会是并发的锅?

内心OS:说好的高并发友好呢。。。。。。

于是想到了async,来处理一下并发吧,限制并发,把嵌套重写一下,于是就有了以上的代码,算了,先让它跑起来吧。。于是。。跑起来了。。

第一个版本,待我后续重写,大佬们求指点。

About

meizitu-crawler

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published