python - 如何将任意字符串作为命令运行

标签 python getattr

我看到了使用 getattr() 进行一些简单的方法/函数调用的答案。

任意字符串怎么样,例如在这里进行网页解析:

from bs4 import BeautifulSoup
import urllib

f = urllib.urlopen(link) # link comes from database, e.g. 'http://www.example.com'
soup = BeautifulSoup(f)

text = soup.find(True, 'text').get_text() # Now this is hardcoded

工作正常,但是运行来自数据库的解析器字符串怎么样?字符串可以是这样的:

soup.find("div", "layout left").find(id=True).get_text()

或者非常匹配任何东西,取决于网页。

最佳答案

您可以使用eval来计算存储在字符串中的任意Python表达式。然而,这很危险。黑客或不道德的用户可能会向数据库中插入恶意代码(例如,1000000**1000000 导致 Python 发疯)。

关于python - 如何将任意字符串作为命令运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15458695/

相关文章:

python - 在 Pandas 数据框中按递增顺序重新排序节点

python - __getattr__ 的不对称行为,新式与旧式类

python - 使用 getattr 分配属性

python - 在python中获取类和实例的属性

python - PyTorch 扩散器中的 "TypeError: getattr(): attribute name must be string",如何修复?

python - Python 获取属性值失败

python - 如何在 numpy 中使基于序列的函数更快?

python - Pip 选择了错误的路径

Python 请求给我 "bad handshake"错误

python - Altair:无法分面分层图