摘要:背景本人于周六早上惊醒于翠花的电话轰炸中一大早竟然问这么伤脑筋愚蠢的问题本想赶紧打发了继续我的回笼觉没想到乐于助人的我当然要帮帮助他了看到这里的红色感叹号不禁眉头一皱打开网站不出我所料姹紫嫣红的图片差点闪瞎我的钛合金狗眼几番浏览欣赏后收工大
背景
</>复制代码
本人于周六早上惊醒于翠花的电话轰炸中...
</>复制代码
一大早竟然问这么伤脑筋(愚蠢)的问题
</>复制代码
本想赶紧打发了 继续我的回笼觉 没想到...
乐(kou)于(shui)助(zhi)人(liu)的我当然要帮帮助他了!
</>复制代码
看到这里的红色感叹号 不禁眉头一皱
几番浏览欣赏后收工大吉 正文开始 所用到的模块</>复制代码
打开网站 不出我所料 姹紫嫣红的gif图片差点闪瞎我的钛合金狗眼
http:创建服务、处理流相关
fs:操作文件及文件夹(读、写)
cheerio:简单粗暴的理解为node界的juquey
先爬来整张网页</>复制代码
为了该文章正常发出 把翠花提供的链接换成站长之家的链接来演示
</>复制代码
// 引入所需模块
var http = require("http");
var cheerio = require("cheerio");
var fs = require("fs");
// 定义爬取目标站
var Url = "http://sc.chinaz.com/tupian/"
http.get(Url, function (res) {
var htmlDate = "";
// 获取页面数据
res.on("data", function (chunk) {
htmlDate += chunk;
});
// 数据获取结束
res.on("end", function () {
// 过滤出所需的元素
filterContent(htmlDate);
});
}).on("error", function () {
console.log("获取数据出错!");
});
过滤
</>复制代码
分析页面结构 看看哪些是需要的 图片都在#container获取到这个节点
</>复制代码
遍历.box 并拿到 a > img 的 src 和 alt
</>复制代码
// 过滤页面信息
function filterContent(htmlDate) {
if (htmlDate) {
var $ = cheerio.load(htmlDate);
// 得到所需内容
var Content = $("#container");
// 存放一会抓来的信息
var ContentData = [];
Content.find(".box").each(function (item, b) {
var pic = $(this);
// 为什么是src2? src获取不到 打印了一下发现有src2
var src = formatUrl(pic.find("a").children("img").attr("src2"));
var name = formatUrl(pic.find("a").children("img").attr("alt"));
// 把抓来的信息交给download函数去下载
download(src, name)
// 这里也存一份
ContentData.push({
src,
name
})
});
// 存放了抓取的图片信息
console.log(ContentData)
} else {
console.log("html null");
}
}
</>复制代码
抓取链接都带有_s是缩略图 需要一个方法帮来转换
</>复制代码
// 或取高清链接
function formatUrl(imgUrl) {
return imgUrl.replace("_s", "")
}
</>复制代码
// 图片下载函数
function download(url, name) {
http.get(url, function (res) {
let imgData = "";
//设置图片编码格式
res.setEncoding("binary");
//检测请求的数据
res.on("data", (chunk) => {
imgData += chunk;
})
res.on("end", () => {
// 没有文件夹则创建 以防报错
if (!fs.existsSync("./images")) {
fs.mkdirSync("./images");
};
fs.writeFile(`./images/${name}.jpg`, imgData, "binary", (error) => {
if (error) {
console.log(error);
} else {
console.log(`${name}----下载成功!`)
}
})
})
})
}
成果展示
最后晒出劳动所得
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/109566.html
摘要:年前无心工作,上班刷知乎发现一篇分享爬虫的文章。另外携带的数据是用来告诉服务器当前请求是从哪个页面请求过来的。 年前无心工作,上班刷知乎发现一篇分享python爬虫的文章。 感觉他爬取的网站里的妹子都好好看哦,超喜欢这里的,里面个个都是美女。 无小意丶:自我发掘爬虫实战1:宅男女神网妹子图片批量抓取,分类保存到本地和MongoDB数据库 无奈python虽然入门过但太久没用早已荒废,最...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:比如分钟破译朋友圈测试小游戏文章里用的方法但有些根本就没有提供网页端,比如今年火得不行的抖音。所以常用的方式就是通过在电脑上装一些抓包软件,将手机上的网络请求全部显示出来。总结下,重点是的抓取,关键是配置代理证书,难点是对请求的分析。 爬虫的案例我们已讲得太多。不过几乎都是 网页爬虫 。即使有些手机才能访问的网站,我们也可以通过 Chrome 开发者工具 的 手机模拟 功能来访问,以便...
摘要:在这之前,还是有必要对一些概念超轻量级反爬虫方案后端掘金前言爬虫和反爬虫日益成为每家公司的标配系统。 爬虫修炼之道——从网页中提取结构化数据并保存(以爬取糗百文本板块所有糗事为例) - 后端 - 掘金欢迎大家关注我的专题:爬虫修炼之道 上篇 爬虫修炼之道——编写一个爬取多页面的网络爬虫主要讲解了如何使用python编写一个可以下载多页面的爬虫,如何将相对URL转为绝对URL,如何限速,...
阅读 2942·2021-11-22 11:56
阅读 3652·2021-11-15 11:39
阅读 984·2021-09-24 09:48
阅读 840·2021-08-17 10:14
阅读 1421·2019-08-30 15:55
阅读 2819·2019-08-30 15:55
阅读 1413·2019-08-30 15:44
阅读 2864·2019-08-30 10:59