摘要:背景本人于周六早上驚醒于翠花的電話轟炸中一大早竟然問這么傷腦筋愚蠢的問題本想趕緊打發(fā)了繼續(xù)我的回籠覺沒想到樂于助人的我當(dāng)然要幫幫助他了看到這里的紅色感嘆號(hào)不禁眉頭一皺打開網(wǎng)站不出我所料姹紫嫣紅的圖片差點(diǎn)閃瞎我的鈦合金狗眼幾番瀏覽欣賞后收工大
背景
本人于周六早上驚醒于翠花的電話轟炸中...
一大早竟然問這么傷腦筋(愚蠢)的問題
本想趕緊打發(fā)了 繼續(xù)我的回籠覺 沒想到...樂(kou)于(shui)助(zhi)人(liu)的我當(dāng)然要幫幫助他了!
看到這里的紅色感嘆號(hào) 不禁眉頭一皺
打開網(wǎng)站 不出我所料 姹紫嫣紅的gif圖片差點(diǎn)閃瞎我的鈦合金狗眼幾番瀏覽欣賞后收工大吉 正文開始 所用到的模塊
http:創(chuàng)建服務(wù)、處理流相關(guān)
fs:操作文件及文件夾(讀、寫)
cheerio:簡(jiǎn)單粗暴的理解為node界的juquey
先爬來整張網(wǎng)頁為了該文章正常發(fā)出 把翠花提供的鏈接換成站長(zhǎng)之家的鏈接來演示
// 引入所需模塊 var http = require("http"); var cheerio = require("cheerio"); var fs = require("fs"); // 定義爬取目標(biāo)站 var Url = "http://sc.chinaz.com/tupian/" http.get(Url, function (res) { var htmlDate = ""; // 獲取頁面數(shù)據(jù) res.on("data", function (chunk) { htmlDate += chunk; }); // 數(shù)據(jù)獲取結(jié)束 res.on("end", function () { // 過濾出所需的元素 filterContent(htmlDate); }); }).on("error", function () { console.log("獲取數(shù)據(jù)出錯(cuò)!"); });過濾
分析頁面結(jié)構(gòu) 看看哪些是需要的 圖片都在#container獲取到這個(gè)節(jié)點(diǎn)
遍歷.box 并拿到 a > img 的 src 和 alt
// 過濾頁面信息 function filterContent(htmlDate) { if (htmlDate) { var $ = cheerio.load(htmlDate); // 得到所需內(nèi)容 var Content = $("#container"); // 存放一會(huì)抓來的信息 var ContentData = []; Content.find(".box").each(function (item, b) { var pic = $(this); // 為什么是src2? src獲取不到 打印了一下發(fā)現(xiàn)有src2 var src = formatUrl(pic.find("a").children("img").attr("src2")); var name = formatUrl(pic.find("a").children("img").attr("alt")); // 把抓來的信息交給download函數(shù)去下載 download(src, name) // 這里也存一份 ContentData.push({ src, name }) }); // 存放了抓取的圖片信息 console.log(ContentData) } else { console.log("html null"); } }
抓取鏈接都帶有_s是縮略圖 需要一個(gè)方法幫來轉(zhuǎn)換
// 或取高清鏈接 function formatUrl(imgUrl) { return imgUrl.replace("_s", "") }
// 圖片下載函數(shù) function download(url, name) { http.get(url, function (res) { let imgData = ""; //設(shè)置圖片編碼格式 res.setEncoding("binary"); //檢測(cè)請(qǐng)求的數(shù)據(jù) res.on("data", (chunk) => { imgData += chunk; }) res.on("end", () => { // 沒有文件夾則創(chuàng)建 以防報(bào)錯(cuò) if (!fs.existsSync("./images")) { fs.mkdirSync("./images"); }; fs.writeFile(`./images/${name}.jpg`, imgData, "binary", (error) => { if (error) { console.log(error); } else { console.log(`${name}----下載成功!`) } }) }) }) }成果展示 最后曬出勞動(dòng)所得
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/109566.html
摘要:年前無心工作,上班刷知乎發(fā)現(xiàn)一篇分享爬蟲的文章。另外攜帶的數(shù)據(jù)是用來告訴服務(wù)器當(dāng)前請(qǐng)求是從哪個(gè)頁面請(qǐng)求過來的。 年前無心工作,上班刷知乎發(fā)現(xiàn)一篇分享python爬蟲的文章。 感覺他爬取的網(wǎng)站里的妹子都好好看哦,超喜歡這里的,里面?zhèn)€個(gè)都是美女。 無小意丶:自我發(fā)掘爬蟲實(shí)戰(zhàn)1:宅男女神網(wǎng)妹子圖片批量抓取,分類保存到本地和MongoDB數(shù)據(jù)庫 無奈python雖然入門過但太久沒用早已荒廢,最...
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:比如分鐘破譯朋友圈測(cè)試小游戲文章里用的方法但有些根本就沒有提供網(wǎng)頁端,比如今年火得不行的抖音。所以常用的方式就是通過在電腦上裝一些抓包軟件,將手機(jī)上的網(wǎng)絡(luò)請(qǐng)求全部顯示出來??偨Y(jié)下,重點(diǎn)是的抓取,關(guān)鍵是配置代理證書,難點(diǎn)是對(duì)請(qǐng)求的分析。 爬蟲的案例我們已講得太多。不過幾乎都是 網(wǎng)頁爬蟲 。即使有些手機(jī)才能訪問的網(wǎng)站,我們也可以通過 Chrome 開發(fā)者工具 的 手機(jī)模擬 功能來訪問,以便...
摘要:在這之前,還是有必要對(duì)一些概念超輕量級(jí)反爬蟲方案后端掘金前言爬蟲和反爬蟲日益成為每家公司的標(biāo)配系統(tǒng)。 爬蟲修煉之道——從網(wǎng)頁中提取結(jié)構(gòu)化數(shù)據(jù)并保存(以爬取糗百文本板塊所有糗事為例) - 后端 - 掘金歡迎大家關(guān)注我的專題:爬蟲修煉之道 上篇 爬蟲修煉之道——編寫一個(gè)爬取多頁面的網(wǎng)絡(luò)爬蟲主要講解了如何使用python編寫一個(gè)可以下載多頁面的爬蟲,如何將相對(duì)URL轉(zhuǎn)為絕對(duì)URL,如何限速,...
閱讀 2858·2021-11-22 11:56
閱讀 3560·2021-11-15 11:39
閱讀 907·2021-09-24 09:48
閱讀 767·2021-08-17 10:14
閱讀 1331·2019-08-30 15:55
閱讀 2761·2019-08-30 15:55
閱讀 1318·2019-08-30 15:44
閱讀 2787·2019-08-30 10:59