Python __new__979;()缺少1个必需的位置参数,具体取决于所刮取的url

Python __new__979;()缺少1个必需的位置参数,具体取决于所刮取的url,python,beautifulsoup,pickle,Python,Beautifulsoup,Pickle,我有一个奇怪的错误,我会尽量简化我的问题。 我有一个简单的函数,它可以用漂亮的汤删除url并返回一个列表。 然后,我在文件中pickle这个列表,所以我设置了recursionlimit(10000)以避免RecursionError。在那之前,一切都很好 但当我尝试取消勾选列表时,出现以下错误: Traceback (most recent call last): File ".\scrap_index.py", line 86, in <module> data_fi

我有一个奇怪的错误,我会尽量简化我的问题。 我有一个简单的函数,它可以用漂亮的汤删除url并返回一个列表。 然后,我在文件中pickle这个列表,所以我设置了recursionlimit(10000)以避免RecursionError。在那之前,一切都很好

但当我尝试取消勾选列表时,出现以下错误:

Traceback (most recent call last):
  File ".\scrap_index.py", line 86, in <module>
    data_file = pickle.load(data)
TypeError: __new__() missing 1 required positional argument: 'name'
为了测试,我尝试了不同的url。 有了这个url,一切都很好:

url_ok = 'https://www.boursorama.com/bourse/'
但有了这个,我就有了打字错误:

url_not_ok = 'https://www.boursorama.com/bourse/actions'
以及测试代码:

import pickle
import sys

sys.setrecursionlimit(10000)

scrap_list = scrap_function(url_not_ok)

with open('test_saving.pkl', 'wb') as data:
    pickle.dump(scrap_list, data, protocol=2)

with open('test_saving.pkl', 'rb') as data:
    data_file = pickle.load(data)

print(data_file)

如果某些类对象在新建构造函数中有额外参数 ,pickle无法序列化它

这可能会导致ULSOAP中出现问题:

class NavigableString(unicode, PageElement):
    def __new__(cls, value):
国家也是如此


作为解决方案,不要存储整个对象,可能只存储前面提到的页面的源代码。

谢谢,我会尝试。但是如果是这样的话,为什么要使用一些URL呢?我在你的链接中找到了解决方案!这是一个编码问题。只要
返回[str(soup)]
就可以不使用
navigablesting
。非常感谢。
class NavigableString(unicode, PageElement):
    def __new__(cls, value):