首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python lxml.html添加参数

python lxml.html添加参数
EN

Stack Overflow用户
提问于 2017-03-28 17:23:30
回答 1查看 154关注 0票数 0

我有一个html模板,我想在其中添加一些内容。该模板如下所示:

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Data Base</title>
    <link rel="stylesheet" href="stylesheet.css" />
</head>
<body>
    <h1>Data Base</h1>
    <div class="file_explorer">
    </div>
    <div class="info_screen">
    </div>
</body>
</html>

我想搜索<div class="file_explorer"></div>并向其添加一些参数。之后,它应该看起来像这样:

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Data Base</title>
    <link rel="stylesheet" href="stylesheet.css" />
</head>
<body>
    <h1>Data Base</h1>
    <div class="file_explorer">
        <p class="folder">Folder_1</p>
        <p class="folder">Folder_2</p>
    </div>
    <div class="info_screen">
    </div>
</body>
</html>

因此,我尝试解析html-template,并希望搜索file_explorer标记来添加段落。我如何搜索它们并在之后添加段落。我尝试过html.cssselector,但它不起作用。请帮帮我。这是我的代码:

代码语言:javascript
复制
from lxml import html
from os import path

class HtmlGenerator:

@staticmethod
def modify_html(html_path, list_folders):
    html_path = path.abspath(html_path)
    parser = html.HTMLParser(remove_blank_text=True)
    if path.isfile(html_path) and html_path.endswith(".html"):
        tree = html.parse(html_path, parser)
        # search for <div class="file_explorer"> [MISSING]
        for folder in list_folders:
            # add folder as paragraph to html [MISSING]
        tree.write(html_path, pretty_print=True)

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-03-28 18:04:59

您可以使用XPath在模板中查找目标div,然后使用E-factory构建新元素:

代码语言:javascript
复制
from lxml.html import builder as E
....
tree = html.parse(html_path, parser)
root = tree.getroot()
# search for <div class="file_explorer">
div = root.find('.//div[@class="file_explorer"]')
for folder in list_folders:
    # add folder as paragraph to html
    # I assume `folder` as a string like 'Folder_1', 'Folder_2', ...
    d.append(E.P(E.CLASS('folder'), folder))
tree.write(html_path, pretty_print=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43065639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档