久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python調(diào)用nodejs將html轉(zhuǎn)換為Markdown

 小小明代碼實(shí)體 2022-03-31

關(guān)于前端HTML轉(zhuǎn)換為Markdown,發(fā)現(xiàn)了一個(gè)非常好用的npm項(xiàng)目:https://sitdown./zh-hans/

首先確保本機(jī)已經(jīng)安裝nodejs,并根據(jù)下面的文章安裝execjs并修改其源碼:

execjs執(zhí)行包含中文參數(shù)的JavaScript
https://xxmdmst.blog.csdn.net/article/details/123099139

在python所在目錄安裝sitdown:

> npm install sitdown

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

確保當(dāng)前目錄中已經(jīng)安裝了sitdown(至少存在node_modules目錄),我們就可以通過(guò)execjs在python中調(diào)用了:

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>📢博客主頁(yè):</span><a href="https://blog.csdn.net/as604049322"><span>https://blog.csdn.net/as604049322</span></a></p>
<p><span>📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 歡迎討論!</span></p>
<p><span>📢本文由 </span><strong><span>小小明-代碼實(shí)體</span></strong><span> 原創(chuàng),首發(fā)于 </span><strong><span>CSDN</span></strong><span>🙉</span></p>
<p><span>📢未來(lái)很長(zhǎng),值得我們?nèi)Ρ几案篮玫纳?</span></p>
</blockquote></div>"""

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

結(jié)果:

Node.js (V8)
> 📢博客主頁(yè):[https://blog.csdn.net/as604049322](https://blog.csdn.net/as604049322)
> 
> 📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 歡迎討論!
> 
> 📢本文由 **小小明-代碼實(shí)體** 原創(chuàng),首發(fā)于 **CSDN**🙉
> 
> 📢未來(lái)很長(zhǎng),值得我們?nèi)Ρ几案篮玫纳?

可以看到轉(zhuǎn)換效果還不錯(cuò),。

不過(guò)這種執(zhí)行方法耗時(shí)較長(zhǎng),每次調(diào)用都需要1秒左右的時(shí)間。

如果我們需要頻繁進(jìn)行轉(zhuǎn)換,推薦是使用node啟動(dòng)相關(guān)的http服務(wù),python直接通過(guò)requests獲取結(jié)果,。

在安裝目錄下新建html2md.js文件,代碼如下:

var { Sitdown } = require('sitdown');
var http = require('http');

let sitdown = new Sitdown({
      keepFilter: ['style'],
      codeBlockStyle: 'fenced',
      bulletListMarker: '-',
      hr: '---',
});

// 創(chuàng)建http server,并傳入回調(diào)函數(shù):
var server = http.createServer(function (request, response) {
    console.log(request.method + ': ' + request.url);
    let data = '';
    request.on('data', chunk => {
        data += chunk;  // 將接收到的數(shù)據(jù)暫時(shí)保存起來(lái)
    });
    request.on('end', () => {
var markdown = sitdown.HTMLToMD(data);
response.writeHead(200, {'Content-Type': 'text/html'});
// 將HTTP響應(yīng)的HTML內(nèi)容寫入response:
response.end(markdown);
    });
});

// 讓服務(wù)器監(jiān)聽(tīng)18080端口:
server.listen(18080);
console.log('Server is running at http://127.0.0.1:18080/');

執(zhí)行下面的命令啟動(dòng)nodejs服務(wù):

>node html2md.js
Server is running at http://127.0.0.1:18080/

此時(shí)我們?cè)谥苯觝ttp調(diào)用:

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>📢博客主頁(yè):</span><a href="https://blog.csdn.net/as604049322"><span>https://blog.csdn.net/as604049322</span></a></p>
<p><span>📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 歡迎討論!</span></p>
<p><span>📢本文由 </span><strong><span>小小明-代碼實(shí)體</span></strong><span> 原創(chuàng),首發(fā)于 </span><strong><span>CSDN</span></strong><span>🙉</span></p>
<p><span>📢未來(lái)很長(zhǎng),值得我們?nèi)Ρ几案篮玫纳?</span></p>
</blockquote></div>"""
md = html2md(html)
print(md)

結(jié)果與上面一樣,但耗時(shí)僅15毫秒,。

image-20220224161236810

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多