NodeJs妹子图爬虫



Nodejs爬妹子图,本人费尽周折试了好多种方式,最后找到了一个好用的nodejs爬妹子图的方法,此代码仅供学习使用。

废话不多说,思路,我们要爬妹子图,首先要找到一个有妹子图的网页,然后从网页中获取这些图片的地址,然后批量下载自己的电脑里,带着这样的思路

需要以下工具

var fs = require('fs');
var path = require('path');
var request = require('request');
var cheerio = require('cheerio');

首先,fs和path模块均为nodejs自带,主要是下面两个,一个是request模块和cheerio模块。

request模块的介绍以及API:https://github.com/request/request

cheerio模块的介绍以及API:https://github.com/cheeriojs/cheerio

简单来说,request模块是用来请求网页的,cheerio是对请求来的网页进行解析的,也就是从html中解析出来图片的src地址

说一下为什么没用jquery解析呢,因为在试验过程中我用npm下载jquery模块之后,引入到文件的时候竟然报错了,详细原因不得而知,然后在网上看到了这个叫cheerio的利器,它跟jquery有很多相似的地方。

安装上面的两个模块

npm install request

npm install cheerio

先找到一个测试页面,比如 http://jandan.net/ooxx/page-1319

我们先要用request来获取这个页面的html

运行后会得到大概下面这样的代码

这个就是我们用request请求到的此页面的HTML,然后我们该使用cheerio模块来解析这个页面了

通过审查页面元素我们可以看出,这些妹子图都是放在 class="text" 下的 img 标签中

其实使用cheerio跟jquery是一样的,我们写了一个acquire方法来解析页面中的img标签中的src地址,代码如下

 

当然,如果你拿不准选择器的话,可以多用console.log来输出,看看取到的地址是否正确,代码运行效果如下

可以看到我们拿到了此页面中所有妹子图的地址,最后一步就是下载这些妹子图了,你不能是一个一个复制这些地址,然后粘贴到浏览器中右键另存为吧,首先,我们要先解析这些图片的文件名,解析文件名很简单,调用path模块中的basename方法就可以得到URL中的文件名

现在我们有了图片的地址和图片的名字,就可以下载了,在这里我们调用的是request模块的head方法来下载,请求到图片再调用fs文件系统模块中的createWriteStream来下载到本地目录

执行之后就可以看到images文件夹下有一大波妹子图了,想要爬多页的话,写个循环就好

注意:有的网站是有反爬机制的,并不是每个网站都可以爬的


猜你喜欢

转载自blog.csdn.net/dufufd/article/details/54629365