如何将bs4.element.ResultSet转换为字符串?蟒蛇

2022-02-26 00:00:00 python beautifulsoup runtime-error

问题描述

我有一个简单的代码,如下所示:

    p = soup.find_all("p")
    paragraphs = []

    for x in p:
        paragraphs.append(str(x))

我正在尝试转换从XML获得的列表,并将其转换为字符串。我想保留它的原始标签,这样我就可以重复使用一些文本,这就是我为什么要这样附加它的原因。但该列表包含6000多个观测值,因此由于str:

出现递归错误

"运行错误:调用Python对象时超出最大递归深度"

我读到您可以更改最大递归,但这样做并不明智。我的下一个想法是将转换为字符串的过程分成500个批次,但我相信一定有更好的方法来做到这一点。有人有什么建议吗?

HTML

这里的问题可能是the document底部的一些二进制图形数据包含字符序列<P,Beautiful Soup试图将其修复为实际的推荐答案标记。我还没有确定是哪个文本导致了"超过递归深度"的错误,但它就在那里的某个地方。它对我来说是p[6053],但是由于您似乎稍微修改了文件(或者您使用的是不同的Beautiful Soup解析器),我想对您来说会有所不同。

假设您不需要文档底部的二进制数据来从Actual<p>标记中提取所需的任何内容,请尝试以下操作:

# boot out the last `<document>`, which contains the binary data
soup.find_all('document')[-1].extract()

p = soup.find_all('p')
paragraphs = []
for x in p:
    paragraphs.append(str(x))

相关文章