使用html2text进行Markdown Markdown

时间:2017-07-11 12:09:17

标签: python html parsing markdown

我可以使用html2text库成功地将一些HTML代码转换为python中的markdown,它看起来像这样:

def mark_down_formatting(html_text, url):
    h = html2text.HTML2Text()

    # Options to transform URL into absolute links
    h.body_width = 0
    h.protect_links = True
    h.wrap_links = False
    h.baseurl = url

    md_text = h.handle(html_text)

    return md_text

一段时间以来它很不错,但它有限制,因为我找不到任何方法来自定义documentation上的输出。

实际上我不需要进行大量的自定义,我只需要将这个HTML标记<span class="searched_found">example text</span>转换为markdown中的任何内容。可能是+example text+

所以我正在寻找我的问题的解决方案,因为html2text是一个很好的库,允许我配置一些选项,比如我用超链接显示的那些,最好有一个基于这个库的解决方案

UPDATE:

我有一个使用BeautifulSoup库的解决方案,但我认为它是一个临时补丁,因为它增加了另一个依赖项,并且它增加了许多不必要的处理。我在这里做的是编辑HTML 之前解析为markdown:

def processing_to_markdown(html_text, url, delimiter):
    # Not using "lxml" parser since I get to see a lot of different HTML
    # and the "lxml" parser tend to drop content when parsing very big HTML
    # that has some errors inside
    soup = BeautifulSoup(html_text, "html.parser")

    # Finds all <span class="searched_found">...</span> tags
    for tag in soup.findAll('span', class_="searched_found"):
        tag.string = delimiter + tag.string + delimiter
        tag.unwrap()  # Removes the tags to only keep the text

    html_text = unicode(soup)

    return mark_down_formatting(html_text, url)

对于非常长的HTML内容,我们解析HTML两次,一次使用BeautifulSoup,然后使用html2text,这证明非常慢。

0 个答案:

没有答案