鍍金池/ 問答/數(shù)據(jù)分析&挖掘  HTML/ cherrio寫的爬蟲可以爬取主頁(yè),但是無(wú)法爬取產(chǎn)品頁(yè)面,為什么?

cherrio寫的爬蟲可以爬取主頁(yè),但是無(wú)法爬取產(chǎn)品頁(yè)面,為什么?

從網(wǎng)站抄了一個(gè)爬蟲想爬點(diǎn)產(chǎn)品信息,不知道為什么產(chǎn)品單頁(yè)就是爬不下來。
但是測(cè)試了下其它頁(yè)面都是可以爬的,為什么呢?
搜獲了下返回error信息,和爬蟲似乎毫無(wú)關(guān)系。

返回error

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at _errnoException (util.js:1022:11)
    at TLSWrap.onread (net.js:628:25)

附上代碼:

var cheerio = require('cheerio');
var http = require('https');
var iconv = require('iconv-lite');

var index = 1;
var n = 0;
var url = 'https://www.thermofisher.com/search/browse/category/cn/zh/602198?navId=10861&resultPage=';
var titles = [];
var datas = [];

//獲取目錄的href
function getTitle(url, i) {
    console.log('now get ' + i + ' page');
    http.get(url + i + '&resultsPerPage=15', function(sres) {
        var chunks = [];
        sres.on('data', function(chunk) {
            chunks.push(chunk);
        });
        sres.on('end', function() {
            var html = iconv.decode(Buffer.concat(chunks), 'UTF-8');
            var $ = cheerio.load(html, { decodeEntities: false });
            $('h2>a').each(function(idx, element) {
                var $element = $(element);
                titles.push({
                    title: $element.attr('href')
                });
            });
            if (i < 5) {
                getTitle(url, ++index);
            } else {
                console.log(titles);
                console.log("over");
                getData(titles, n);
            }
        })
    })
}

//獲取產(chǎn)品信息
function getData(urls, n) {
    console.log('now get ' + n + ' data');
    var link = urls[n].title.toString();
    console.log(link);
    http.get(link, function(sres) {    //這里出錯(cuò),卡一段時(shí)間后報(bào)錯(cuò),把link換成其它地址可以爬去。
        var chunks = [];
        sres.on('data', function(chunk) {
            chunks.push(chunk);
        })
        sres.on('end', function() {
            var html = iconv.decode(Buffer.concat(chunks), 'UTF-8');
            var $ = cheerio.load(html, { decodeEntities: false });
            $('.container h1').each(function(idx, element) {
                var $element = $(element);
                console.log($element);
                datas.push({
                    name: $element.text()
                });
            });
            if (n < urls.length - 1) {
                getData(titles, ++n);
            } else {
                console.log('ok');
                console.log(datas);
            }
        })
    })
}


function main() {
    console.log("start");
    getTitle(url, index);
}

main();
回答
編輯回答
陪她鬧

找到問題了,網(wǎng)頁(yè)用Angular動(dòng)態(tài)加載的,爬蟲爬取的時(shí)候都是空的,就報(bào)錯(cuò)咯~~

2018年5月27日 23:06