使用Python

时间:2015-06-27 22:02:29

标签: python html parsing

问题如下: 从对象数据库获取一些基本的HTML自动生成的文件作为转储。这是基于表格的信息。文件的结构对于每一代都是相同的,通常是连贯的内容。 我必须进一步处理这个文件,做一些评论等,所以我希望编辑一下这个HTML文件让我们说添加额外的表格单元格和可写文本字段在文件中添加备注,也许还有一些最终按钮来生成一些额外的输出。现在的问题是:

我选择编写Python脚本来处理文件中的这些更改。这是一个正确的选择,还是你可以提出更好的建议?

现在我正在处理如下:

1)制作基础文件的工作复制

2)在Python中将workcopy作为I / O字符串打开:

content = content_file.read()

3)通过html.parser对象运行:

ModifyHtmlParser.feed(content)

4)使用HTML解析器的重载基类方法我正在搜索标签的有趣部分:

def handle_starttag(self, tag, attrs):
    #print("Encountered a start tag:", tag)
    if tag == "tr":
        print("Table row start!")
        offset = self.getpos()
        tagText = self.get_starttag_text()

结果我得到了不可变的输入子集,标记标记,现在我感觉我正走向死胡同......关于我应该如何重新思考我的想法的任何想法?任何特定的library都有用吗?

1 个答案:

答案 0 :(得分:1)

我建议您使用以下一般方法。

  1. 使用任何现有的库来加载和解析HTML到方便的内存中树表示。
  2. 在树中查找相关节点。 (第1部分中的大多数库将提供某种形式的XPath和/或CSS选择器。两者都允许您查找满足特定规则的所有节点。在您的情况下,规则可能是“tr ......” 。)
  3. 单独处理找到的节点(第1部分中的大多数库将允许您就地编辑树)。
  4. 写出修改后的树或新生成的树。
  5. 以下是如何实现上述内容的一个特定示例。 (库的确切选择有点灵活。这里有多个选项。)

    1. HTML解析和表示库有多种选择。我听到的最常见的建议是LXML
    2. LXML同时提供CSS selector supportXPath support
    3. 请参阅LXML etree documentation