当前位置: 首页 > 知识库问答 >
问题:

使用lxml解析本地文件。埃特雷

邓深
2023-03-14

我为任何不清晰的地方提前道歉(我是编程新手)。我正在尝试用lxml解析一组本地文件。埃特里。我使用lxml(和xpath)编写了一个解析脚本,该脚本从SEC网页中查找相关数据并导出到。csv文件。该脚本适用于单个url,但我想将其推广到数千个html页面。我已经在本地下载了所有的html文件(我使用curl获取链接,wget下载)——但是我没有成功地替换我的解析器。有效的旧版本是:

page = requests.get('url')
tree = html.fromstring(page.text)

我试着用etree替换它。解析,以便解析本地下载到“Bullseye”目录中的文件

path = "/Users/dbk13/Desktop/SEC/bullseye"
dirs = os.listdir( path )

for files in dirs: 
    page = os.path.join(path,files)
    etree.parse(page)

我的本地文件路径有问题吗?

我经常遇到这样的错误:

文件“postings\u up\u updated.py”,第26行,在etree中。用lxml解析(页面)文件“lxml.etree.pyx”,第3299行。埃特里。在lxml中解析(src/lxml/lxml.etree.c:72421)文件“parser.pxi”,第1791行。埃特里_parseDocument(src/lxml/lxml.etree.c:105883)文件“parser.pxi”,第1817行,在lxml中。埃特里_parseDocumentFromURL(src/lxml/lxml.etree.c:106182)文件“parser.pxi”,第1721行,在lxml中。埃特里_parseDocFromFile(src/lxml/lxml.etree.c:105181)文件“parser.pxi”,第1122行,在lxml中。埃特里_BaseParser_parseDocFromFile(src/lxml/lxml.etree.c:100131)文件“parser.pxi”,第580行,用lxml表示。埃特里_ParserContext_handleParseResultDoc(src/lxml/lxml.etree.c:94254)文件“parser.pxi”,第690行,在lxml中。埃特里_handleParseResult(src/lxml/lxml.etree.c:95690)文件“parser.pxi”,第620行,在lxml中。埃特里_raiseParserError(src/lxml/lxml.etree.c:94757)lxml。埃特里。XMLSyntaxError:文档为空,第1行第1列

共有1个答案

高英彦
2023-03-14

错误消息表明该文件是空的,但是,我认为更可能的情况是您试图解析一个目录,就好像它是一个文件一样。此代码生成的回溯与您显示的相同:

from lxml import etree

etree.parse('/tmp')
Traceback (most recent call last):
.
.
lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1

如果“/Users/dbk13/Desktop/SEC/bullseye”中存在子目录,则可能会发生这种情况,因为os。listdirs()将在返回的列表中包含子目录。如果是这种情况,您可以尝试使用os检查常规文件。路径isfile()

import os

path = "/Users/dbk13/Desktop/SEC/bullseye"
dirs = os.listdir( path )

for filename in dirs:
    page = os.path.join(path, filename)
    if os.path.isfile(page):
        etree.parse(page)

另一点值得注意的是,您似乎试图使用XML解析器解析超文本标记语言文件。这不太可能成功,因为绝大多数超文本标记语言文件不是XML,因此不能用XML解析器可靠地解析。我会推荐lxml.html,但您似乎已经尝试过了。另一种可选的超文本标记语言解析器是美丽汤。

 类似资料:
  • 问题内容: 我是iOS开发人员中的新手,并且尝试解析本地Json文件,例如 这是我的代码: 我在此站点上找到了一个示例,但出现以下错误 -JSONValue失败。错误是:对象键后不期望令牌“值分隔符”。 问题答案: JSON具有严格的键/值表示法,用于R4和响应的键/值对不正确。试试这个: 如果您从文件中读取字符串,则不需要所有的斜杠。 文件将如下所示: {“ quizz”:[{“ id”:“ 1

  • 问题内容: 我有一系列使用Beautiful Soup解析为单个文本文件的HTML文件。HTML文件的格式设置为使其输出始终为文本文件中的三行,因此输出将类似于: 但这很容易 换句话说,HTML文件的内容在每个文件中并不是真正的标准,但是它们始终会产生三行。 因此,我想知道如果我想从Beautiful Soup生成的文本文件然后将其解析为带有以下内容的列的CSV文件(使用上面的示例),应该从哪里开

  • 我有这个文件要处理,我正试图找出如何将第二行作为不同的对象来读取。在这一行的末尾,最后一项是公交车的数量。第二行、第四行等应包含idBus和noOfBus,并用逗号分隔。 基于这些课程 我想要一个函数来处理CSV文件中所有公交车和大学线路的列表。它必须使用流API。我不知道这是否可能或如何进行。 当然,可以根据类进行更改,但保留变量,不添加任何额外内容。 我认为最方便的方法是浏览文件,根据两个班级

  • 问题内容: 我试图最终解决一些编码问题,这些问题从尝试使用lxml抓取HTML弹出。这是我遇到的三个示例HTML文档: 1。 2。 3。 我的基本脚本: 结果是: 因此,显然是样本1和缺少标签的问题。这里的解决方案将正确地将示例1识别为utf-8,因此在功能上与我的原始代码等效。 lxml文档出现冲突: 从这里开始,该示例似乎建议我们应该使用UnicodeDammit将标记编码为unicode。

  • 问题内容: 我正在寻找一种将复杂文本文件解析为pandas DataFrame的简单方法。下面是一个示例文件,我希望解析后的结果是什么样,以及我当前的方法。 有什么方法可以使其更简洁/更快/更pythonic /更易读? 我也把这个问题放在了Code Review上 。 我最终写了一篇博客文章向初学者解释。 这是一个示例文件: 这是我希望解析后的结果看起来像什么: 这是我目前解析的方式: 问题答案

  • 本文向大家介绍Python lxml模块的基本使用方法分析,包括了Python lxml模块的基本使用方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python lxml模块的基本使用方法。分享给大家供大家参考,具体如下: 1 lxml的安装 安装方式:pip install lxml 2 lxml的使用 2.1 lxml模块的入门使用 导入lxml 的 etree 库 (导入没