前段時間看到有個同學用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...