用node.js写一个爬取知乎妹子纸质地图的小爬虫
序
说起写节点爬虫的原因,真是惭愧。有一天,和往常一样,晚上吃完饭,我刷了一下知乎,第一页是你见过最漂亮的女孩长什么样。点击在各种漂亮的姐姐纸上拍照!看,我真的很想保存这些漂亮的姐姐纸照片!一个一个点击保存,在第18张图的时候突然想到。我不是程序员。我该如何做这个手工?不,我不能丢程序员的脸,所以我开始了这次爬虫之旅。
原则
刚进爬虫坑的时候没有太多高深的理论知识。为了从知乎的帖子中获取一张图片,我将其归结为以下步骤。
准备一个网址(当然,比如你见过最漂亮的女生长什么样?获取这个url的html内容,分析dom结构,遍历找到这些漂亮的姐妹纸图片URL,获取图片内容,并将图片内容写入本地文件开始
我们大概可以在了解原理后开始工作
准备一个网址
这是最简单的。随便去知乎搜一下就好多了。我们使用
发一张你觉得很漂亮的美女照片?
例如,首先分析这个页面的dom结构。其实很简单。知乎里的一个页面会包含很多类型的图片,比如头像和用户上传的图片。基本上可以在noscript中找到对应的图片地址。
获取此url的html内容,并在当前页面的noscript中获取img链接
在这一步中,我们需要了解一些简单的nodejs知识,并使用一个名为cheerio的库。这个图书馆是做什么用的?详情请转到cheerio。
简而言之,jQuery可以在命令行中用来搜索和遍历以获得相应的元素。
那么我怎么才能得到这篇文章的html呢
使用nodejs的https模块
var https=require(' https ')getallHTMl(URL,回调){ let sHtml=' ',_ this=thishttps.get(url),(res)={ res.on('data ',(data)={ sHtml=data;});res.on('end ',()={ callback.bind(_this,sHtml)();}) }).on('error ',(err)={ console . log(err);});}通过以上操作得到网站的html后,就是遍历我们需要的图片地址。
Filterhtml (shtml,filepath) {let $=chef。load (shtml),//将上一步得到的网站html传入chef。加载,你会得到一个包装好的jQuey对象。您可以选择元素$ imgs=$(' noscripting ')、imgdata=[]、$Imgs .每个((I,e)={让imgUrl=$(e)。attr(' src ');//取出对应的URL imgdata . push(imgUrl);//传入url开始下载_ this.downloadimg (imgur,_ this.filepath,function(err){ console . log(imgur '已关闭');});});console . log(IMgdata);}有了图片的url,如何在本地下载?
我们需要使用请求库,只需调用api,并将其与节点本地文件写入的api相结合。
downloadImg (imgUrl,filePath,callback) {让fileName=this . parsefilename(imgUrl);请求(imgUrl)。管道(fs.createWriteStream(')。/“文件路径”/“文件名”)。on('close ',回调回调);}你在这里完成了,不是很容易吗?源代码已经上传。欢迎下载查看。
GitHub地址:https://github.com/qianlongo/node-small-crawler
本地下载地址:http://xiaozai.jb51.net/201705/yuanma/node-small-crawler(jb51.net)
摘要
以上就是本文的全部内容。希望这篇文章的内容对大家学习或者使用node.js有帮助,有问题可以留言交流。谢谢你的支持。
版权声明:用node.js写一个爬取知乎妹子纸质地图的小爬虫是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。