nodejs 爬取小說

2021-08-16 18:23:33 字數 1961 閱讀 1012

前段時間看到有個同學用python爬取了**,於是打算用nodejs爬取一下**,在這裡先總結一下整個過程.(僅供學習,請勿商業)

// 類似jquery的乙個庫

const cheerio = require('cheerio');

// 檔案管理模組

const fs = require('fs');

// 控制併發數

const async = require('async');

var url = '';

var number = 0;

var start = new

date();

console.log("開始爬取首頁......");

var options = ;

request(options,function

(err,res,body)

console.log("首頁爬取成功,費時" + (new

date() - start) / 1000 + '秒');

// 處理爬取的資訊

body = iconv.decode(body,'gbk');

var $ = cheerio.load(body);

var maxlimit = 5;

var title = $('#info>h1').text() + '.txt';

var urls = $('#list>dl>dd>a');

var urls = ;

urls.each( function

(index,ele);

urls.push(data);

});async.maplimit(urls,maxlimit,function

(item,callback),function

(err,result)秒`);

result.sort(function

(a,b));

result = result.map(function

(item)).join('\n\r');

write(title,result);

var end = (new

date() - start ) / 1000;

console.log("共耗時"+end+"秒");

})});var getdata = function

(item,callback)失敗,共耗時$秒\n\r`;

callback(null,);

message(11,str);

}else成功,共耗時$秒\n\r`;

var data = ;

callback(null,data);

message(10,str);

number++;

console.log(`成功獲取$個`);

}

})};var write = function

(bookname,data)秒`);

}// 每個請求的資訊,success or false

var message = function

(type,data)

//success

if(type == 11)

fs.writefile(name,data,options,function

(err) })}

其實也沒什麼好說的,就是各種npm的綜合使用,值得注意的就是程式裡的一下細節處理,爬取到的內容是先儲存的記憶體中好,還是儲存在外部檔案中?爬取到內容的應該如何排序?等問題.

requests爬取小說

1.url解析 2.傳送請求 3.接收返回 4.進行解析 5.儲存 將國風中文網制定頁的 的題目 作者 最近更新章節和時間抓取下來儲存到本地 小夥伴們,今天我們用的利劍是requests xpath 第一步 匯入模組 import requests from lxml import etree im...

Python爬取小說

感覺這個夠蛋疼的,因為你如果正常寫的話,前幾次執行沒問題,之後你連 都沒改,再執行就出錯了。其實這可能是網路請求失敗,或者有反爬蟲的東西吧。但這就會讓你寫的時候非常苦惱,所以這這東西,健壯性及其重要!import requests from bs4 import beautifulsoup impo...

python 爬取小說

前些天突然想看一些 可能是因為壓力大,所以就要有補償機制吧。為了節省流量,就想著把內容爬下來,然後就可以在路上看了。於是有了下面的指令碼。usr bin env python coding utf 8 import requests from lxml import etree 為了解決unicod...