我正在使用此模板标签:
@register.filter
def php_striptags(text, allowed=""):
soup = BeautifulSoup(text)
# list all tags
allowed_tags = allowed.split()
for tag in soup.find_all(True):
if tag.name not in allowed_tags:
tag.unwrap()
return soup.encode_contents().decode('utf8')
它在开发机器上工作正常,但我在生产中遇到这个错误:
Exception Type: RuntimeError
Exception Value: restricted attribute
Exception Location: /usr/local/lib/python2.7/inspect.py in getargspec, line 813
我在webfaction上托管我的网站,使用apache和mod_wsgi运行。可能有什么不对?
答案 0 :(得分:4)
终于找到了真正的问题,实际上是在BeautifulSoup doc中记录的: http://www.crummy.com/software/BeautifulSoup/bs4/doc/#other-parser-problems
如果您的脚本在一台计算机上运行而在另一台计算机上运行,则可能是因为这两台计算机具有不同的可用解析器库。例如,您可能已在安装了lxml的计算机上开发了该脚本,然后尝试在仅安装了html5lib的计算机上运行该脚本。请参阅解析器之间的差异,了解其重要性,并通过在BeautifulSoup构造函数中提及特定的解析器库来解决问题。
为了制作汤,请尝试以下方法:
soup = BeautifulSoup(text, "html.parser")
答案 1 :(得分:0)
我相信你没有将BeautifulSoup安装到你的系统Python库中,而是你已经下载了BeautifulSoup,并把它放在你的自定义PYTHONPATH
中。这使得您的BeautifulSoup副本被视为外部Python代码,Python以受限模式运行它(请参阅Restricted Execution)
只需通过pip
/ easy_install
安装BeautifulSoup,或为其安装操作系统包,此错误就会消失。