跳转到主要内容

将HTML转换为Markdown。

项目描述

GitHub Workflow Status Pypi version License Pypi Downloads

安装

pip安装markdownify

使用

将一些HTML转换为Markdown

from markdownify import markdownify as md
md('<b>Yay</b> <a href="http://github.com">GitHub</a>')  # > '**Yay** [GitHub](http://github.com)'

指定要排除的标签

from markdownify import markdownify as md
md('<b>Yay</b> <a href="http://github.com">GitHub</a>', strip=['a'])  # > '**Yay** GitHub'

...或指定要包含的标签

from markdownify import markdownify as md
md('<b>Yay</b> <a href="http://github.com">GitHub</a>', convert=['b'])  # > '**Yay** GitHub'

选项

Markdownify支持以下选项

strip

要删除的标签列表。此选项不能与convert选项一起使用。

convert

要转换的标签列表。此选项不能与strip选项一起使用。

autolinks

一个布尔值,指示当标签的内容与其href匹配时是否应使用“自动链接”样式。默认为True。

default_title

一个布尔值,用于启用将链接的标题设置为href,如果没有提供标题。默认为False。

heading_style

定义标题应如何转换。接受的值是ATX、ATX_CLOSED、SETEXT和UNDERLINED(它是SETEXT的别名)。默认为UNDERLINED。

bullets

要使用的项目符号样式的可迭代对象(字符串、列表或元组)。如果可迭代对象只包含一个项目,则无论列表嵌套有多深都将使用它。否则,项目符号将根据嵌套级别交替使用。默认为'*+-'。

strong_em_symbol

在markdown中,*和_都用于编码strongemphasized文本。可以选择这些符号中的任意一个,选项为ASTERISK(默认)或UNDERSCORE。

sub_symbol, sup_symbol

定义包围<sub><sup>文本的字符。默认为空字符串,因为这不是标准行为。可以是如~和^之类的字符,结果为~sub~和^sup^。如果值以<开头并以>结尾,则它被视为HTML标签,并在字符串中插入<后面的/;这允许指定使用原始HTML在输出中为下标指定<sub>,例如。

newline_style

定义在markdown中标记换行符(<br>)的样式。此选项的默认值SPACES将采用通常的两个空格和一个换行符,而BACKSLASH将换行符转换为\\n(一个反斜杠和一个换行符)。虽然后一种约定是非标准的,但它很常见,并且被许多解释器支持。

code_language

定义应假定所有<pre>部分的编程语言。如果页面上的所有代码都是相同的编程语言并且应该用```python或类似的方式进行注释,则很有用。默认为''(空字符串)且可以是任何字符串。

code_language_callback

当HTML代码包含提供代码语言的pre标签时,例如作为类,可以使用此回调从标签中提取语言并将其前缀添加到转换后的pre标签。回调获取一个唯一的参数,即BeautifylSoup对象,并返回一个包含代码语言的字符串,或None。使用类名作为代码语言的示例可以是

def callback(el):
    return el['class'][0] if el.has_attr('class') else None

默认为None

escape_asterisks

如果设置为False,则不在文本中将*转换为\*。默认为True。

escape_underscores

如果设置为False,则不在文本中将_转换为\_。默认为True。

escape_misc

如果设置为False,则不转义某些具有Markdown意义的文本中的杂项标点符号。默认为True

keep_inline_images_in

当图像位于标题或表格单元格内时,图像被转换为它们的alt文本。如果某些内联图像应转换为Markdown图像,则可以将此选项设置为允许包含内联图像的父标签列表,例如['td']。默认为空列表。

wrap, wrap_width

如果将wrap设置为True,则所有文本段落都将根据wrap_width字符数进行换行。默认为False80。与newline_style=BACKSLASH一起使用,以保留段落中的换行符。

可以在markdownify函数中将选项指定为kwargs,或者作为MarkdownConverter子类中的嵌套Options类。

转换BeautifulSoup对象

from markdownify import MarkdownConverter

# Create shorthand method for conversion
def md(soup, **options):
    return MarkdownConverter(**options).convert_soup(soup)

创建自定义转换器

如果您有特殊用例需要特殊转换,您可以始终从MarkdownConverter继承并重写要更改的方法。处理名为abc的HTML标签的函数称为convert_abc(self, el, text, convert_as_inline),并返回包含转换后的HTML标签的字符串。MarkdownConverter对象将根据函数名称处理转换。

from markdownify import MarkdownConverter

class ImageBlockConverter(MarkdownConverter):
    """
    Create a custom MarkdownConverter that adds two newlines after an image
    """
    def convert_img(self, el, text, convert_as_inline):
        return super().convert_img(el, text, convert_as_inline) + '\n\n'

# Create shorthand method for conversion
def md(html, **options):
    return ImageBlockConverter(**options).convert(html)
from markdownify import MarkdownConverter

class IgnoreParagraphsConverter(MarkdownConverter):
    """
    Create a custom MarkdownConverter that ignores paragraphs
    """
    def convert_p(self, el, text, convert_as_inline):
        return ''

# Create shorthand method for conversion
def md(html, **options):
    return IgnoreParagraphsConverter(**options).convert(html)

命令行界面

使用markdownify example.html > example.md或将输入从stdin(cat example.html | markdownify > example.md)管道传输。调用markdownify -h以查看所有可用选项。它们与上面列出的相同,并接受相同的参数。

开发

要运行测试和代码检查器,请先运行一次pip install tox,然后运行tox

项目详情


下载文件

下载适合您的平台的文件。如果您不确定要选择哪一个,请了解更多关于安装包的信息。

源代码分发

markdownify-0.13.1.tar.gz (13.6 kB 查看哈希值)

上传时间 源代码

构建分发

markdownify-0.13.1-py3-none-any.whl (10.8 kB 查看哈希值)

上传时间: Python 3

由以下支持