色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

node.js - 關(guān)于Node爬蟲(chóng)爬小說(shuō)的問(wèn)題

瀏覽:90日期:2024-07-16 18:02:09

問(wèn)題描述

最近因?yàn)闆](méi)小說(shuō)看,也無(wú)聊,就想著用Node來(lái)寫(xiě)爬蟲(chóng)爬書(shū)下來(lái),弄了好幾天有些問(wèn)題。爬小說(shuō)異步的話(huà)章節(jié)不是順序排列的,所以用了sync-request進(jìn)行同步操作,我爬的是筆趣閣這個(gè)網(wǎng)站上的書(shū),現(xiàn)在由于剛學(xué),只是做了爬單本書(shū)的。我發(fā)現(xiàn)在爬取的時(shí)候,會(huì)假死掉,停在那不動(dòng)了,而且每次的章節(jié)數(shù)不同,我就加了個(gè)十秒的timeout超時(shí),但是還是會(huì)出現(xiàn)這種假死的情況。后來(lái)百度了下,說(shuō)網(wǎng)站是有防止爬蟲(chóng)的東東的,具體我也不太清楚==,我就想,那我就加個(gè)間隔咯,我讓他每請(qǐng)求十次就休息20秒鐘,再重新爬。結(jié)果!!!還是會(huì)假死,233333。所以現(xiàn)在有點(diǎn)不明白為啥了,想求教一下,給點(diǎn)思路。拜托各位~~

下面是我請(qǐng)求的代碼,具體章節(jié)列表我在另一個(gè)js里面爬出來(lái)寫(xiě)在json里面了,這邊是直接請(qǐng)求每個(gè)鏈接的了:

var http = require(’http’)var fs = require(’fs’)var cheerio = require(’cheerio’)var iconv = require(’iconv-lite’)var request = require(’sync-request’)var urlList = JSON.parse(fs.readFileSync(’list.json’, ’utf-8’))var header = JSON.parse(fs.readFileSync(’header.json’), ’utf-8’)//爬取每章節(jié)正文并存在txt中function getContent(list,title) { //用try catch進(jìn)行錯(cuò)誤捕獲,防止報(bào)錯(cuò)跳出 try{ var res = request(’GET’,list.link,{ ’timeout’: 10000, ’retry’: true, ’retryDelay’: 10000 }) var html = iconv.decode(res.body, ’utf8’) var $ = cheerio.load(html,{ decodeEntities: false }) var ContentTitle = $(’.bookname h1’).text() var ContentText = $(’#content’).text().trim().replace(’readx();’, ’’).replace(/&nbsp;/g, ’’) fs.appendFileSync(title+'.txt', ContentTitle) fs.appendFileSync(title+'.txt', ContentText) console.log('爬取' + list.link + '成功') }catch(err) { console.log('爬取' + list.link + '出錯(cuò)') }}//為了達(dá)到間隔的調(diào)用請(qǐng)求做了遞歸調(diào)用function getUrl(index) { for (let i = index;i < urlList.length;i++){ if (i>0 && i%10 == 0){ getContent(urlList[i],header.title) console.log('休息一下') setTimeout(() => {i++getUrl(i) },20000) return }else { console.log(i) getContent(urlList[i],header.title) } }}getUrl(0)

node.js - 關(guān)于Node爬蟲(chóng)爬小說(shuō)的問(wèn)題

就和這個(gè)一樣,爬了一段時(shí)間就這樣了,就跟死機(jī)了似得,后面不管等多久都沒(méi)動(dòng)靜,設(shè)置的超時(shí)啥的也沒(méi)有反應(yīng)

問(wèn)題解答

回答1:

這兩天一直在弄這個(gè)問(wèn)題,起初是以為是sync-request的問(wèn)題,后來(lái)?yè)Q了別的還是一樣。我就猜可能是ip網(wǎng)站給屏蔽了還是什么的,后來(lái)中午吃飯和同事閑聊,順便就請(qǐng)教了下,他們也就是說(shuō)大概就這個(gè)問(wèn)題。既然如此,我就去弄了些免費(fèi)的代理IP,然后在請(qǐng)求的時(shí)候,只要是請(qǐng)求超時(shí)或者報(bào)錯(cuò)就立馬切換一個(gè)IP地址去請(qǐng)求。這樣下來(lái),昨天特地爬了一個(gè)很大的小說(shuō),今天上班過(guò)來(lái)一看,全部爬下來(lái)了,沒(méi)有出現(xiàn)問(wèn)題,哈哈。不過(guò)免費(fèi)的代理IP很多都用不了,所以在這上面浪費(fèi)了部分時(shí)間?,F(xiàn)在要開(kāi)始看看怎么爬多本書(shū)了,↖(^ω^)↗

相關(guān)文章:
主站蜘蛛池模板: 欧美成人一级毛片 | 一本大道香蕉大vr在线吗视频 | 免费一级做a爰片久久毛片 免费一级做a爰片性色毛片 | 国内精品2020情侣视频 | 久久精品99毛片免费 | 最新毛片久热97免费精品视频 | 成人男女视频 | 亚洲免费精品视频 | 久久久国产精品免费视频 | 久久99精品视香蕉蕉 | 亚洲国产精品ⅴa在线观看 亚洲国产精品aaa一区 | 97公开免费视频 | 日韩亚| 国产精品免费一区二区三区 | 国产三级视频在线 | 日本在线视频观看 | 草草在线免费视频 | 美女va| 综合558欧美成人永久网站 | 97在线免费观看视频 | 毛片免费永久不卡视频观看 | 久久久久依人综合影院 | 成人午夜毛片 | 欧美日韩一区二区三区视视频 | 成人免费视频日本 | 久久精品视频在线观看榴莲视频 | 99爱精品视频 | 国产成人免费观看在线视频 | 中文精品爱久久久国产 | 亚洲精品久久久久久久网站 | 日韩毛片 | 一级做a爱| 欧美一级片手机在线观看 | 成 人免费视频l免费观看 | 手机看片日韩日韩韩 | 国产精品三级在线播放 | 国产欧美日韩精品一区二 | 99久99久6久热在线播放 | japanesevideo国产在线| 男女男精品视频免费观看 | 999国内精品永久免费视频 |