Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >markdown导出为html_python html转word

markdown导出为html_python html转word

作者头像
全栈程序员站长
发布于 2022-10-04 11:30:25
发布于 2022-10-04 11:30:25
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

关于前端HTML转换为Markdown,发现了一个非常好用的npm项目:https://sitdown.mdnice.com/zh-hans/

首先确保本机已经安装nodejs,并根据下面的文章安装execjs并修改其源码:

execjs执行包含中文参数的JavaScript https://xxmdmst.blog.csdn.net/article/details/123099139

python所在目录安装sitdown:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> npm install sitdown

added 2 packages, removed 220 packages, and changed 93 packages in 4s

确保当前目录中已经安装了sitdown(至少存在node_modules目录),我们就可以通过execjs在python中调用了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os
import execjs

print(execjs.get().name)
js_code = """var { Sitdown } = require('sitdown'); let sitdown = new Sitdown({ keepFilter: ['style'], codeBlockStyle: 'fenced', bulletListMarker: '-', hr: '---', }); function html2md(data) { return sitdown.HTMLToMD(data) } """

ctx = execjs.compile(js_code)
html = """<div id="write" class=""><blockquote> <p><span>📢博客主页:</span><a href="https://blog.csdn.net/as604049322"><span>https://blog.csdn.net/as604049322</span></a></p> <p><span>📢欢迎点赞 👍 收藏 ⭐留言 📝 欢迎讨论!</span></p> <p><span>📢本文由 </span><strong><span>小小明-代码实体</span></strong><span> 原创,首发于 </span><strong><span>CSDN</span></strong><span>🙉</span></p> <p><span>📢未来很长,值得我们全力奔赴更美好的生活✨</span></p> </blockquote></div>"""

md = ctx.call("html2md", html)
print(md)

结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Node.js (V8)
> 📢博客主页:[https://blog.csdn.net/as604049322](https://blog.csdn.net/as604049322)
> 
> 📢欢迎点赞 👍 收藏 ⭐留言 📝 欢迎讨论!
> 
> 📢本文由 **小小明-代码实体** 原创,首发于 **CSDN**🙉
> 
> 📢未来很长,值得我们全力奔赴更美好的生活✨

可以看到转换效果还不错。

不过这种执行方法耗时较长,每次调用都需要1秒左右的时间。

如果我们需要频繁进行转换,推荐是使用node启动相关的http服务,python直接通过requests获取结果。

在安装目录下新建html2md.js文件,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var { 
 Sitdown } = require('sitdown');
var http = require('http');
let sitdown = new Sitdown({ 

keepFilter: ['style'],
codeBlockStyle: 'fenced',
bulletListMarker: '-',
hr: '---',
});
// 创建http server,并传入回调函数:
var server = http.createServer(function (request, response) { 

console.log(request.method + ': ' + request.url);
let data = '';
request.on('data', chunk => { 

data += chunk;  // 将接收到的数据暂时保存起来
});
request.on('end', () => { 

var markdown = sitdown.HTMLToMD(data);
response.writeHead(200, { 
'Content-Type': 'text/html'});
// 将HTTP响应的HTML内容写入response:
response.end(markdown);
});
});
// 让服务器监听18080端口:
server.listen(18080);
console.log('Server is running at http://127.0.0.1:18080/');

执行下面的命令启动nodejs服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>node html2md.js
Server is running at http://127.0.0.1:18080/

此时我们在直接http调用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
def html2md(html, html2md_server="http://127.0.0.1:18080/"):
res = requests.post(html2md_server, data=html.encode("u8"))
res.encoding = "u8"
md = res.text
return md
html = """<div id="write" class=""><blockquote> <p><span>📢博客主页:</span><a href="https://blog.csdn.net/as604049322"><span>https://blog.csdn.net/as604049322</span></a></p> <p><span>📢欢迎点赞 👍 收藏 ⭐留言 📝 欢迎讨论!</span></p> <p><span>📢本文由 </span><strong><span>小小明-代码实体</span></strong><span> 原创,首发于 </span><strong><span>CSDN</span></strong><span>🙉</span></p> <p><span>📢未来很长,值得我们全力奔赴更美好的生活✨</span></p> </blockquote></div>"""
md = html2md(html)
print(md)

结果与上面一样,但耗时仅15毫秒。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/196146.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月7日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
手把手教你抖音系列视频批量下载器开发
此时我们只需要点击 访问抖音主页,程序则会使用本地的谷歌游览器访问抖音主页。再次点击下载按钮:
Python进阶者
2022/03/10
2.2K0
手把手教你抖音系列视频批量下载器开发
Typora导出的PDF目录标题自动加编号
Python进阶者
2023/09/22
4440
Typora导出的PDF目录标题自动加编号
超实用!Office三件套批量转PDF以及PDF书签读写与加水印
日常工作中,我们经常需要将 office 三件套,Word、Excel和PPT转换成PDF。当然办公软件自身都带有这样的功能,但当我们需要一次性转换大量的office文件时,还是用程序批量处理比较方便。
叶庭云
2021/12/07
3K0
超实用!Office三件套批量转PDF以及PDF书签读写与加水印
Web Spider案例 网洛者 第一题 JS混淆加密 - 反hook操作 练习(五)
Web Spider Fiddler - JS Hook 基本使用:https://blog.csdn.net/EXIxiaozhou/article/details/128794705 网洛者 - 反反爬虫训练平台网址:https://wangluozhe.com/
EXI-小洲
2023/03/01
8441
Web Spider案例 网洛者 第一题 JS混淆加密 - 反hook操作 练习(五)
HTML基础之bit哥的反客为主之道(9)
作者名:1_bit 简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。
1_bit
2022/01/06
5300
HTML基础之bit哥的反客为主之道(9)
原生 JS 实现 HTML 转 Markdown ,html2md.js
之前因为一些需要,需要转换部分 HTML 标签成 markdown 格式,但是不知不觉就完善到一个相对完整的函数。
独元殇
2023/03/14
12.5K0
HTML5实现好看的端午节网页源码
在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。
xcLeigh
2025/02/25
800
HTML5实现好看的端午节网页源码
2021年全网最详细大数据常见端口汇总❤️【建议收藏】❤️
2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习。
Lansonli
2021/10/11
1.9K0
如何用Python下载百度指数的数据
百度指数(Baidu Index) 是以百度海量网民行为数据为基础的数据分析平台,它能够能够告诉用户:某个关键词在百度的搜索规模有多大,一段时间内的涨跌态势以及相关的新闻舆论变化,关注这些词的网民是什么样的,分布在哪里,同时还搜了哪些相关的词。
Python进阶者
2021/12/01
9190
如何用Python下载百度指数的数据
HTML基础标签
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
3.8K0
2048小游戏HTML网页版源码共享
上下左右键控制 游戏截图如下: HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; c
海拥
2021/08/23
3.8K0
Qt对Html富文本支持的控件以及QLabel两种打开超链接的方式
原文链接:https://blog.csdn.net/humanking7/article/details/80685893
祥知道
2020/03/10
3.8K0
【JS逆向】保姆级图文教程,获取某名片网js逆向后的真实数据!
爬与反爬,就相当于矛与盾,攻与防,与普通爬虫相比,反爬虫愈发普遍,相对于普通爬虫,逆向爬虫的困难度提升了不少,非常考验选手的专业素养,当然也难倒了本渣渣这种业余选手。
二爷
2023/12/21
1.8K0
【JS逆向】保姆级图文教程,获取某名片网js逆向后的真实数据!
Web Spider案例 网洛克 第二题 JJEncode加密 练习(六)
Web Spider 常见混淆EVAL、AA、JJ、JSFUCK:https://blog.csdn.net/EXIxiaozhou/article/details/128767669 网洛者 - 反反爬虫训练平台网址:https://wangluozhe.com/
EXI-小洲
2023/03/01
2990
Web Spider案例 网洛克 第二题 JJEncode加密 练习(六)
2021年大数据Hive(六):Hive的表生成函数
explode(col):将hive一列中复杂的array或者map结构拆分成多行。 explode(ARRAY) 数组的每个元素生成一行 explode(MAP) map中每个key-value对,生成一行,key为一列,value为一列
Lansonli
2021/10/11
1.5K0
Unity与安卓交互 | Unity2019.3版本之后,在Android Studio中写代码导出aar包与Unity中使用交互的方法
这是旧版本从AS打包aar给Unity使用的方法: Unity与安卓交互 之 ✨ 在Android Studio中写代码导出aar包,在Unity中使用交互(小白完整篇)
呆呆敲代码的小Y
2022/11/20
3K0
Unity与安卓交互 | Unity2019.3版本之后,在Android Studio中写代码导出aar包与Unity中使用交互的方法
Python爬虫自学系列(八)-- 项目实战篇(二)爬取我的所有CSDN博客
刚开始呢,我想找网站地图,看看能不能找到属于我的那一块儿。后来发现是我想多了,网站地图是有,但是那么多博主,一人搞一个也不太现实。于是这条路就走不通了。
看、未来
2021/02/01
1.4K0
手机自动进程管理软件_进程管理器下载
经过一番开发,编译出了仿Excel的筛选功能的JavaScript脚本和css样式表:
全栈程序员站长
2022/10/01
8330
手机自动进程管理软件_进程管理器下载
Python获取Websocket接口的数据
在前面的用Tornado实现web聊天室一文中介绍了python实现websocket的方法,这篇文章将要分享如何用python作为客户端获取websocket接口的数据。
全栈程序员站长
2022/09/14
3.8K0
Python获取Websocket接口的数据
HTML is about meaning
HTML标签本身的意义是为了传递对于一个document元素的含义,所以再考虑使用正确的标签表达内容之前,考虑你的网页看起来怎么样为时过早,请将注意力集中到每一个你使用的HTML标签上。
littlelyon
2018/10/19
5780
推荐阅读
相关推荐
手把手教你抖音系列视频批量下载器开发
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文