【问题标题】:Clean up .html reports and export as .txt files清理 .html 报告并导出为 .txt 文件
【发布时间】:2015-08-06 04:29:01
【问题描述】:

我整晚都在寻找,但我仍然不确定如何完成这项工作。我是python新手,所以如果我问一些简单的问题,请先原谅我。

我有三千个 .html 文件(从受信任的网站下载的所有新产品描述)存储在一个文件夹中,现在我想一一清理这些文件(即只保留内容/产品描述和删除标签等),然后将每个内容存储为单个 .txt 文件。

在阅读了这里发布的一些问答之后,我认为我需要使用 lxml 包而不是漂亮的汤,因为所有 .html 文件都来自高度可信的来源。但是,我不知道应该使用 lxml 中的哪个命令/选项,请告诉我吗?

【问题讨论】:

    标签: python html beautifulsoup lxml lxml.html


    【解决方案1】:

    lxml 是一个不错的选择,不仅因为它是一个很好的来源,而且因为它的速度。只需考虑到受信任的来源并不意味着格式正确的标记,这在库之间很重要。

    如果所有页面都具有相同的结构,xpath 将完成这项工作。首先,您需要获取 Chrome 可以为您执行的xpath,只需执行“检查元素”-> 右键单击​​您需要解析的 html 元素-> 选择“复制 xpath”。

    在您请求页面后,在您的 python 代码中。获取html并转换它:

    from lxml import html
    tree = html.fromstring("htmlString") #you can switch this with the path of the html file
    name = tree.xpath('XPATH GOES HERE') 
    

    在大多数情况下,这将返回一个列表对象。要仅从属性中获取文本,请将“/text()”添加到 xpath 的末尾。 Chrome 的 xpath 版本有时与 python 读取的不同(我在表中遇到了这个问题),所以如果它没有返回任何内容,请稍微使用 xpath 以确保正常工作。

    或者,

    您可以“导航” html 文件的结构,而不是使用带有 xpath 的

    .find_class('css_class_Name') .getnext() .getchildren()
    

    例如然后使用

    .text_content() 
    

    从 html 元素中提取文本。我鼓励您阅读这些docs,以准确了解您需要使用哪一个。

    【讨论】:

    • 谢谢,但是有没有办法自动化整个过程,即我不需要每次都为新文档复制粘贴“xpath”?我有超过 3000 个文件,再次感谢
    • 如果您将它们存档,并且它们都遵循标准名称(file1.html、file2.html 等),则在 for 循环中运行上面的整个脚本。不要忘记导入操作系统或请求,具体取决于您是从硬盘驱动器还是在线获取它。
    猜你喜欢
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多