首页 > 其他分享 >[前端js] 爬取亿图脑图大纲

[前端js] 爬取亿图脑图大纲

时间:2022-12-23 12:12:25浏览次数:63  
标签:info 亿图 title 脑图 爬取 child div data markdownStr

这段程序使看到了好的东西,又没有零钱的产物
还是老师让画思维导图我不想画还想白嫖的想法
用时20分钟
就拿这个来作为例子 https://mm.edrawsoft.cn/template/286842
image

1. 找到一个突破点

我看了网络,没有接口,没办法偷懒
思维导图是canvas渲染的,我也懒得找数据从哪里来的,所以就只有大纲了
image

function getOutline(node) {
    let info = {child: []};
    info.title = $(node).children(".ed-outline-title").find("span").text();
    $(node).children(".ed-outline").each(function (index, ele) {
        info.child.push(getOutline(ele));
    });
    return info;
}
// 运行
// 里面是jquery的css选择器,选择的是大纲的节点
getOutline($("#app > div > div > div:nth-child(4) > div.ed-outline.ed-outline--top").get(0))

这会生成一个Json

{
	"child": [
		{
			"child": [
				{
					"child": [],
					"title": "没有孩子的三级"
				},
						{
					"child": [],
					"title": "没有孩子的三级"
				}
			],
			"title": "有孩子的二级"
		},
				{
			"child": [],
			"title": "没有孩子的二级"
		}
	],
	"title": "一级"
}

有了json,怎么转化为思维导图呢?
用markmap!

2. json转markdown生成思维导图

先做json转markdown,很简单

function toMarkdown(data, depth=0) {
    let markdownStr = "";
    data.title = data.title.replace(/[(\r\n)(\n)]/g,"<br/>");
    markdownStr +=  "    ".repeat(depth)+"- "+data.title+"\n";
    for (let i in data.child) {
        markdownStr += toMarkdown(data.child[i], depth+1);
    }
    return markdownStr;
}

在markdown里,换行能引起各种各样的错误,所以我将每一层的文字的换行符替换成<br/>

接下来是生成思维导图
试用: https://markmap.js.org/repl
源码: https://github.com/markmap/markmap
把刚才的那一段示例生成为markdown

- 一级
    - 有孩子的二级
        - 没有孩子的三级
        - 没有孩子的三级
    - 没有孩子的二级

打开网址,将markdown填入文本框
image
非常完美,这样子给老师交差就方便了
好了完整代码放到这里, 要是有变化我也不管啦, 我已经和老师交差了

(function () {
    function getOutline(node) {
        let info = {child: []};
        info.title = $(node).children(".ed-outline-title").find("span").text();
        $(node).children(".ed-outline").each(function (index, ele) {
            info.child.push(getOutline(ele));
        });
        return info;
    }
    function toMarkdown(data, depth=0) {
        let markdownStr = "";
        data.title = data.title.replace(/[(\r\n)(\n)]/g,"<br/>");
        markdownStr +=  "    ".repeat(depth)+"- "+data.title+"\n";
        for (let i in data.child) {
            markdownStr += toMarkdown(data.child[i], depth+1);
        }
        return markdownStr;
    }
    let outlineBox = $("#app > div > div > div:nth-child(4) > div.ed-outline.ed-outline--top").get(0);
    let copyBtn = $(`<button style="position:absolute;">复制思维导图markdown</button>`);
    copyBtn.css({
        "top": $(outlineBox).offset().top+"px",
        "right": $(outlineBox).offset().right+"px"
    });
    copyBtn.click(function () {
        navigator.clipboard.writeText(toMarkdown(getOutline(outlineBox)));
    });
    $("body").append(copyBtn);
})();

标签:info,亿图,title,脑图,爬取,child,div,data,markdownStr
From: https://www.cnblogs.com/dffxd/p/edrawsoft-outline-spider.html

相关文章

  • 42爬取数据并保存至db
    需求:将爬取数据保存到数据库将爬取数据保存为txt文件将txt文件内容生成为词云查看爬取到数据库的数据信息代码如下:importos.pathimportrequestsimportpymysqli......
  • Python网络爬虫——爬取和分析福建二手房房价及各项数据
    一、 选题的背景介绍随着越来越多城市的房地产市场进入存量时代,二手房市场的地位愈发重要,其走势对于房地产整体市场的影响也逐渐加强。在很多二手房市场规模占比较高的一......
  • 联合早报新闻数据爬取与可视化分析
    联合早报新闻数据爬取与可视化分析 一. 选题背景在现今随着互联网的发展,时刻流通的信息变得更加庞大而繁杂,获取信息,整合提取有实际效益的信息成为了一个难题。......
  • 网易云热门音乐评论爬取+大数据分析+数据可视化
    一、选题的背景声乐艺术的情感,是歌唱者在自己内心唤起曾经的体验的情感,是一首歌曲的灵魂,抒发情感,给人带来幸福感满足感是音乐的魅力所在。只有加入情感的表现才能使演......
  • 爬虫1 认识和基本爬取UA伪装
    robots.txt协议君子协议如果爬取了robots.txt不允许被爬的东西,会封你IP,你还可以进局子。可以在网站根目录下加上访问看下存在不,大网站一般是存在的。百度翻译[练练手......
  • python爬虫-美团海底捞评论及评分数据爬取和分析
    美团海底捞评论及评分数据爬取和分析一、选题背景  通过网络请求的方式获取响应数据,再对获取的数据进行分析提取和汇总,并储存到xlsx表格中。在进入互联网存储海量数据......
  • 【编程实践】认识爬虫并手把手带手实现新闻网站的爬取
    前言什么是爬虫网络爬虫(WebSpider)又叫网络蜘蛛,或者网络机器人(在FOAF社区中间,更经常的称为网页追逐者),正如他的英文名一样,很形象的一个名字。把互联网比喻成一个蜘蛛网,......
  • python网络爬虫-百合网数据信息爬取+大数据可视化
    (一)、选题的背景为什么要选择此选题?要达到的数据分析目标是什么?从社会、经济、技术、数据来源等方面进行描述(200字以内)(10分)百合网是一家通过网上实名进行交友和婚恋的服......
  • 【校招VIP】推推产品项目课:从脑图到原型图,重点在于功能细节和用户交互
    VIP的服务,不一样的校招。大家好,我是校招VIP的大拿老师,我们今天继续商业实战项目:【推推】的小说详情模块原型图部分。在上节课中我们把脑图的逻辑讲完了,这节的原型图对产品......
  • Python网络爬虫-FIFA球员数据爬取
     FIFA球员数据爬取一.选题背景    世界杯的开展,给全世界广大球迷带来了狂欢和盛宴,球员们的精彩表现给世界各地的观众带来了一场场精彩绝伦的比赛。在比赛中,球员是决......