如果你不會(huì)Python語(yǔ)言饶辙,正好又是一個(gè)node.js小白耳幢,看完這篇文章之后模暗,一定會(huì)覺得受益匪淺禁悠,感受到自己又新get到了一門技能,如何用node.js從零開始去寫一個(gè)簡(jiǎn)單的爬蟲兑宇,十分鐘時(shí)間就能搞定碍侦,步驟其實(shí)很簡(jiǎn)單。node的安裝就不一步步的解釋了隶糕,如果不會(huì)可以自行百度瓷产。在node開大環(huán)境下開始第一步:
1:在d盤新建一個(gè)文件夾WebSpider
2:cmd右鍵以管理員模式打開,進(jìn)入d盤枚驻,cd 進(jìn)入剛剛創(chuàng)建的文件夾里面
cd WebSpider
3:mkdir FirstSpider (創(chuàng)建一個(gè)FirstSpider文件夾)
創(chuàng)建FirstSpider文件夾之后的目錄
4:進(jìn)入剛剛創(chuàng)建的文件夾里面 cd FirstSpider
5: npm init (初始化工程)
此時(shí)需要填寫一些項(xiàng)目信息濒旦,你可以根據(jù)情況填寫,當(dāng)然也可以一路回車再登。
創(chuàng)建完項(xiàng)目后尔邓,會(huì)生成一個(gè)package.json的文件。該文件包含了項(xiàng)目的基本信息锉矢。
6:安裝第三方包(后面程序會(huì)直接調(diào)用包的模塊)
說明:由于http模塊梯嗽、fs模塊都是內(nèi)置的包,因此不需要額外添加沽损。
這里安裝cheerio包灯节,和request包。request 用于發(fā)起http請(qǐng)求
cheerio 用于將下載下來的dom進(jìn)行分析和提取 你可以把它當(dāng)做jQuery來用
在cmd中,cd進(jìn)入cd FirstSpider文件夾显晶,然后執(zhí)行命令:
npm install cheerio –save
安裝完cheerio包后贷岸,繼續(xù)安裝request包, npm install request –save
說明:npm(nodejs package manager)磷雇,nodejs包管理器偿警;
–save的目的是將項(xiàng)目對(duì)該包的依賴寫入到package.json文件中。
如果想要將爬取的數(shù)據(jù)和圖片分類放好唯笙,那就事先建立一個(gè)data和image文件夾準(zhǔn)備著螟蒸。
在FirstSpider文件夾下新建
創(chuàng)建子文件夾data(用于存放所抓取的新聞文本內(nèi)容)
創(chuàng)建子文件夾image(用于存放所抓取的圖片資源)
創(chuàng)建一個(gè)first_spider文件
整個(gè)項(xiàng)目的目錄結(jié)構(gòu)如下圖所示:
7:重點(diǎn)內(nèi)容,打開first_spider崩掘,并一行一行的敲代碼七嫌,如果你不想寫代碼的話,去網(wǎng)站上找一些代碼過來進(jìn)行測(cè)試即可苞慢。
var request = require('request')
var cheerio = require('cheerio')
for(var i = 1;i<4;i++){
request('http://www.souweixin.com/personal?t=41&p='+i,function(error,response,body){
if(!error && response.statusCode == 200){
$ = cheerio.load(body)
var links = [];
$(".boldBorder > a").each(function(i,item){
links.push($(this).attr("href"))
})
for(var i=0;i<links.length;i++){
request('http://www.souweixin.com'+links[i],function(error,response,body){
if(!error && response.statusCode == 200){
$ = cheerio.load(body)
console.log('weixin: '+$('.bold').text()+' name: '+$('h1').text()+' desc: '+$('.f18').text());
}
})
}
}
})
}
8:運(yùn)行程序诵原,命令很簡(jiǎn)單哦
在cmd命令行下,cd 到你創(chuàng)建工程文件夾FirstSpider下挽放,然后 node first_spider.js 程序就跑起來了绍赛。
9:注意:如果這個(gè)時(shí)候遇見這樣的bug
80端口被占用,這里額外的提一下:
解決端口被占用的問題:http://www.reibang.com/p/a7fc19b0c2f1
找到這些端口辑畦,一個(gè)個(gè)關(guān)閉即可
原文作者:祈澈姑娘
技術(shù)博客:http://www.reibang.com/u/05f416aefbe1
90后前端妹子吗蚌,愛編程,愛運(yùn)營(yíng)纯出,愛折騰蚯妇。歡迎關(guān)注【編程微刊】公眾號(hào),回復(fù)【領(lǐng)取資源】,500G編程學(xué)習(xí)資源干貨免費(fèi)送暂筝。