摘要:也是就做了一個(gè)爬取煎蛋網(wǎng)妹子圖的爬蟲,并保持至本地。思路介紹通過請(qǐng)求報(bào)文模擬一次訪問煎蛋網(wǎng)的操作獲取到了網(wǎng)頁的代碼后,進(jìn)行正則表達(dá)式匹配,得到圖片地址通過圖片地址,再次發(fā)送請(qǐng)求報(bào)文,將圖片數(shù)據(jù)保存至本地思路簡(jiǎn)單了解后,便開始工作了。
“流氓不可怕,就怕流氓有文化”
前天剛考完編譯,今天考完網(wǎng)絡(luò),就開始搗鼓代碼了,花了一天時(shí)間摸索了一下nodejs的爬蟲,也就是tcp,http連接。
也是就做了一個(gè)爬取煎蛋網(wǎng)妹子圖的爬蟲,并保持至本地。
思路介紹通過http請(qǐng)求報(bào)文模擬一次訪問煎蛋網(wǎng)的操作
獲取到了網(wǎng)頁的HTML代碼后,進(jìn)行正則表達(dá)式匹配,得到圖片地址
通過圖片地址,再次發(fā)送http請(qǐng)求報(bào)文,將圖片數(shù)據(jù)保存至本地
思路簡(jiǎn)單了解后,便開始工作了。
然而并不是一帆風(fēng)順 得不到HTML?參考資料http://chenxi.name/60.html,利用request包進(jìn)行傻瓜式調(diào)用,然而并不能生效,將會(huì)跳轉(zhuǎn)至一個(gè)屏蔽提示網(wǎng)頁
煎蛋網(wǎng)為了防止惡意爬取數(shù)據(jù),進(jìn)行了一定程度的防爬措施。但這可難不倒我,為什么在瀏覽器上就能正常瀏覽圖片頁面呢?
于是我打開瀏覽器控制臺(tái),復(fù)制頁面請(qǐng)求報(bào)文的cmd格式,粘貼至命令行中運(yùn)行,能夠正確得到HTML。
所以,我覺得問題就是出現(xiàn)在請(qǐng)求報(bào)文頭部數(shù)據(jù),于是復(fù)制下瀏覽器中報(bào)頭,利用nodejs的http包,建立http連接。
require("http").get({ hostname:"jandan.net", path:"/", header:{ ... } },function(res){ })
但是奇怪的是!還是響應(yīng)302,跳轉(zhuǎn)至屏蔽提示頁面。
最后沒辦法的我只好利用底層一點(diǎn)的api——net包,建立tcp連接,發(fā)送符合http請(qǐng)求報(bào)文格式的數(shù)據(jù)。
var net = require("net"); var header = require("fs").readFileSync("./header.txt").toString(); module.exports = function (path,callback) { const socket = net.createConnection(80,"jandan.net"); socket.write( "GET "+path+" HTTP/1.1 "+ header ); socket.setEncoding("utf-8"); socket.setTimeout(4000,function () { callback(html); console.error(new Error("Time OUT")); socket.end(); }); var html = ""; socket.on("data",function (chunk) { html+=chunk; }); socket.on("end",function () { console.log("disconnected from server"); }); }
header.txt
Host: jandan.net Connection: keep-alive Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 Referer: http://jandan.net/v Accept-Language: zh-CN,zh;q=0.8 Cookie: gif-click-load=on; bad-click-load=on; PHPSESSID=u1gnmqnpb75injakbgvkb6r413; 4036050675=c119Yp%2BLrMWuv%2BWMyYtq3x6vTdbFzaTbUyoiLt%2Fv; jdna=596e6fb28c1bb47f949e65e1ae03f7f5#1467288596467; Hm_lvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1467287791; Hm_lpvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1467288598; _ga=GA1.2.330681373.1467287790
注意,header.txt最后需要兩個(gè) 表示請(qǐng)求報(bào)頭結(jié)束。最后果然是成功了,但具體兩種方法的不同我也說不上來,希望有熱心讀者能告訴我。
數(shù)據(jù)傳輸同步異步?利用下面的遞歸方法加上Promise.all同步方法,防止過度的tcp連接(改用下面方法后,tcp讀寫錯(cuò)誤明顯減少,但還是會(huì)出現(xiàn),不知道有沒有大神幫我解決該問題呢?)
function run(i,low) { if(i{ return new Promise((resolve,reject)=>{ var req = http.get(x,function (res) { res.on("error",function (err) { console.error(err); resolve("fail"); }); var filename = x.substr(x.lastIndexOf("/")+1); download(dir+"/"+filename,res); console.log("PAGE:"+page+"..."+filename+"..."+(i+1)+"/"+a.length); resolve("done"); }).end(); }); }); Promise.all(proms) .then((values)=>{ //上一頁的圖片加入下載隊(duì)列后,再開始遞歸下一頁。 run(i-1,low); }); }); }
最后文件夾就像下面一樣!
甩下代碼地址,飆個(gè)車jandan-spider
關(guān)注我的博客moyuyc.github.io ,有技術(shù)的老司機(jī)帶你飆車!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79816.html
摘要:大家知道,一塊網(wǎng)卡的價(jià)格其實(shí)要遠(yuǎn)遠(yuǎn)低于一顆,如此設(shè)計(jì)也使得快杰云主機(jī)的性價(jià)比得到進(jìn)一步提升再看存儲(chǔ)網(wǎng)公路,即用戶主機(jī)和存儲(chǔ)集群之間的通信。老劉博客之前文章有介紹過《新一代快杰云主機(jī):計(jì)算、網(wǎng)絡(luò)、存儲(chǔ),唯快不破》,描述了UCloud對(duì)標(biāo)阿里云第六代云服務(wù)器的超高性價(jià)比的快杰云主機(jī)應(yīng)用場(chǎng)景和非凡的機(jī)器性能以及客戶案例。有朋友看過后,跑過來問老劉快杰云主機(jī)原理,快杰那么突出的性能是全靠CPU嗎?是...
摘要:我們的目標(biāo)是用爬蟲來干一件略污事情最近聽說煎蛋上有好多可愛的妹子,而且爬蟲從妹子圖抓起練手最好,畢竟動(dòng)力大嘛。服務(wù)器超載尤其是對(duì)給定服務(wù)器的訪問過高時(shí)。個(gè)人爬蟲,如果過多的人使用,可能導(dǎo)致網(wǎng)絡(luò)或者服務(wù)器阻塞。 我們的目標(biāo)是用爬蟲來干一件略污事情 最近聽說煎蛋上有好多可愛的妹子,而且爬蟲從妹子圖抓起練手最好,畢竟動(dòng)力大嘛。而且現(xiàn)在網(wǎng)絡(luò)上的妹子很黃很暴力,一下接受太多容易營(yíng)養(yǎng)不量,但是本著...
大家好,我是鋒哥。今天就不爆照了,主要是內(nèi)心比較澎湃; 剛剛 群里,段大佬發(fā)布技術(shù)搞錢交流會(huì),如下圖: 某大佬開發(fā)一套系統(tǒng),賣了800萬,成都買了6套房,把普通人兩輩子的錢都一次性賺好了。 作為10年IT行業(yè)經(jīng)驗(yàn),已經(jīng)看穿這個(gè)行業(yè); 所以我也一直有個(gè)規(guī)劃,技術(shù)沉淀到一定階段,搞些有搞頭的產(chǎn)品,招幾個(gè)女大專生運(yùn)維,成本控制好,產(chǎn)品一旦成熟,以及用戶量上去,然后價(jià)格差不多的話,直接出售賣掉,起步...
摘要:大家好,我是然然。今天內(nèi)心比較澎湃剛剛?cè)豪?,段大佬發(fā)布技術(shù)搞錢交流會(huì),如下圖某大佬開發(fā)一套系統(tǒng),賣了萬,成都買了套房,把普通人兩輩子的錢都一次性賺好了。 大家好,我是然然。今天內(nèi)心比較澎湃; 剛剛 群里,段大佬發(fā)布技術(shù)搞錢交流會(huì),如下圖: 某大佬開發(fā)一套系統(tǒng),賣了800萬,成都買了6套房,...
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
閱讀 1780·2021-10-13 09:39
閱讀 1357·2019-08-30 13:58
閱讀 1445·2019-08-29 16:42
閱讀 3592·2019-08-29 15:41
閱讀 3017·2019-08-29 15:11
閱讀 2550·2019-08-29 14:10
閱讀 3440·2019-08-29 13:29
閱讀 2120·2019-08-26 13:27