【问题标题】:How to insert a HTML element in a tree of lxml.html如何在 lxml.html 的树中插入 HTML 元素
【发布时间】:2013-06-18 14:37:54
【问题描述】:

我正在使用 python 3.3 和 lxml 3.2.0

问题: 我在变量webpageString = "<html><head></head><body>webpage content</body></html>" 中有一个网页 我想在两个标题标签之间插入一个css链接标签,这样我就得到了 webpageString = "<html><head><link rel='stylesheet' type='text/css'></head><body>webpage content</body></html>"

我写了以下代码:

def addCssCode(self):
    tree = html.fromstring(self.article)
    headTag = tree.xpath("//head")
    #htmlTag = tree.getroot()

    if headTag is None:
        pass    #insert the head tag first

    cssLinkString = "<link rel='stylesheet' type='text/css' href='"+ self.cssLocation+"'>"
    headTag[0].insert(1, html.HtmlElement(cssLinkString))
    print(cssLinkString)
    self.article = html.tostring(tree).decode("utf-8")

这会导致插入-

    <HtmlElement>&lt; link rel='stylesheet' type='text/css' href='cssCode.css' &gt;</HtmlElement>

我也尝试在下一页中解决相同的问题,但它也没有奏效。 python lxml append element after another element

我该如何解决这个问题? 谢谢

【问题讨论】:

    标签: python lxml lxml.html


    【解决方案1】:

    使用.insert/.append方法。

    import lxml.html
    
    def add_css_code(webpageString, linkString):
        root = lxml.html.fromstring(webpageString)
        link = lxml.html.fromstring(linkString).find('.//link')
        head = root.find('.//head')
        title = head.find('title')
        if title == None:
            where = 0
        else:
            where = head.index(title) + 1
        head.insert(where, link)
        return lxml.html.tostring(root)
    
    webpageString1 = "<html><head><title>test</title></head><body>webpage content</body></html>"
    webpageString2 = "<html><head></head><body>webpage content</body></html>"
    linkString = "<link rel='stylesheet' type='text/css'>"
    
    print(add_css_code(webpageString1, linkString))
    print(add_css_code(webpageString2, linkString))
    

    【讨论】:

    • 感谢它的工作,但它与 append() 方法无关。我必须使用 insert() 因为我需要在特定位置插入链接标签,即在标题标签之后。
    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2022-07-06
    • 2015-11-20
    相关资源
    最近更新 更多