相关疑难解决方法(0)

让外部链接在一个令人讨厌的新窗口中打开

我最近实现了添加target="_blank"到这样的外部链接:

@hooks.register('after_edit_page')
def do_after_page_edit(request, page):
    if hasattr(page, "body"):
        soup = BeautifulSoup(page.body)
        for a in soup.findAll('a'):
            if hasattr(a, "href"):
            a["target"] = "_blank"
        page.body = str(soup)
        page.body = page.body.replace("<html><head></head><body>", "")
        page.body = page.body.replace("</body></html>", "")
        page.body = page.body.replace("></embed>", "/>")
        page.save()

@hooks.register('construct_whitelister_element_rules')
def whitelister_element_rules():
    return {
        'a': attribute_rule({'href': check_url, 'target': True}),
    }
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 美丽的汤混淆输出,添加html, head & body标签 - 不要自动放置html,头部和身体标签,beautifulsoup

  2. 它也与嵌入标签混淆 - 如何让BeautifulSoup 4尊重自动关闭标签?

  3. 因此我蹩脚的" fix"用空字符串手动替换部分输出.

题:

这样做的正确和最佳方法是什么?

html python django hook wagtail

6
推荐指数
2
解决办法
1567
查看次数

为什么BeautifulSoup会修改我的自闭元素?

这是我的脚本:

import BeautifulSoup

if __name__ == "__main__":
    data = """
    <root>
        <obj id="3"/>
        <obj id="5"/>
        <obj id="3"/>
    </root>
    """
    soup = BeautifulSoup.BeautifulStoneSoup(data)
    print soup
Run Code Online (Sandbox Code Playgroud)

运行时,打印:

<root>
  <obj id="3"></obj>
  <obj id="5"></obj>
  <obj id="3"></obj>
</root>
Run Code Online (Sandbox Code Playgroud)

我希望它保持相同的结构.我怎样才能做到这一点?

python xml beautifulsoup

2
推荐指数
1
解决办法
591
查看次数

Python美丽汤在html中插入注释

我正在尝试使用漂亮的汤在html中插入注释,我想在关闭头部之前插入它,我正在尝试这样的操作

soup.head.insert(-1,"<!-- #mycomment -->")
Run Code Online (Sandbox Code Playgroud)

它在插入之前,</head>但值已被实体编码&lt;!-- #mycomment --&gt;。Beautiful Soup文档谈到了插入标签,但是我应该如何直接插入注释。

html python beautifulsoup python-2.7

2
推荐指数
1
解决办法
904
查看次数

标签 统计

python ×3

beautifulsoup ×2

html ×2

django ×1

hook ×1

python-2.7 ×1

wagtail ×1

xml ×1