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

sam*_*exe 8 python runtime-error beautifulsoup

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

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

    for x in p:
        paragraphs.append(str(x))
Run Code Online (Sandbox Code Playgroud)

我试图转换我从xml获得的列表并将其转换为字符串.我想保留它的原始标签,以便我可以重用一些文本,因此我之所以如此追加它.但是该列表包含超过6000个观测值,因此由于str而发生递归错误:

"RuntimeError:调用Python对象时超出了最大递归深度"

我读到你可以改变最大递归但这样做并不明智.我的下一个想法是将转换分为500个批次,但我相信必须有更好的方法来做到这一点.有人有建议吗?

sen*_*hin 6

这里的问题可能是文档底部的一些二进制图形数据包含字符序列<P,Beautiful Soup正试图将其修复为实际的HTML标记.我没有设法确定哪个文本导致"超出递归深度"错误,但它在那里的某个地方.这p[6053]对我来说,但是因为你似乎已经修改了一些文件(或者你可能正在使用不同的解析器来制作美丽的汤),所以我想你会有所不同.

假设您不需要文档底部的二进制数据来从实际 <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))
Run Code Online (Sandbox Code Playgroud)