python - 如何将 bs4.element.ResultSet 转换为字符串? python

标签 python beautifulsoup runtime-error

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

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

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

我正在尝试转换从 xml 获得的列表并将其转换为字符串。我想保留它的原始标签,以便我可以重用一些文本,这就是我像这样附加它的原因。但是该列表包含超过 6000 个观察值,因此由于 str 出现递归错误:

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

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

最佳答案

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

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

关于python - 如何将 bs4.element.ResultSet 转换为字符串? python ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968562/

相关文章:

python - 出于特殊目的更改 pandas DataFrame 中的类型?

Python Turtle 窗口每第二次运行就会崩溃

Python: BeautifulSoup 解析 </li> 和 <ul> 并更改 class_= 名称

python - BeautifulSoup findall 返回空列表

c++ - SPOJ 中的运行时错误

vba - 在 VBA 中对多个键进行排序;运行时错误 450 : Wrong number of arguments or invalid property assignment

python - 非阻塞 Matplotlib 动画

python - 如何在不破坏 apt 的情况下更新 Python 3 的替代品?

python - split ("\n") 和 splitlines() 都无法拆分字符串

java - 我在这个java程序中找不到运行时错误(NZEC)