将HTML转换为Markdown。
项目描述
安装
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中,*和_都用于编码strong或emphasized文本。可以选择这些符号中的任意一个,选项为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字符数进行换行。默认为False和80。与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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab257f9e6bd4075118828a28c9d02f8a4bfeb7421f558834aa79b2dfeb32a098 |
|
MD5 | 3e399ac76fe62bf96a4497a8069385c8 |
|
BLAKE2b-256 | 195abd1b685ee9efbfb0b22774a30188dfb4048c64e8a6c80a65a7f207af4ea1 |
markdownify-0.13.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1d181d43d20902bcc69d7be85b5316ed174d0dda72ff56e14ae4c95a4a407d22 |
|
MD5 | abe30641101d9a1032aea0dc91bf63b4 |
|
BLAKE2b-256 | 6ce96e2757a670b8c48bc48eff1c20cb9d71f1476e844038bdbdb76f17e6a12b |