使用 Selenium Python,我得到了 script 标签的内容,它是一个字典。但是当我试图获取它的键时,我得到一个错误,这是一个字符串。我正在尝试使用 eval 转换为字典,但我也遇到了错误。尝试使用来自库的 eval,同样的错误。这是代码:
script_raw = driver.find_element_by_id('__NEXT_DATA__').get_attribute('innerHTML')
print(script_raw)
script = eval(str(script_raw))
print(script)
错误:
script = eval(str(script_raw))
File "<string>", line 1, in <module>
NameError: name 'null' is not defined
第一个打印输出以下文本:
{"props":{"pageProps":{"initialApolloState":{"ROOT_QUERY":{"__typename":"Query","sticker({\"input\":{\"id\":\"sticker-advent-katowice-2019\"}})":{"_id":"sticker-advent-katowice-2019","name":"Наклейка | advent | Katowice 2019","title":" advent | Katowice 2019"...
我不明白出了什么问题。我将不胜感激您的帮助!
您很可能在文本的内部某处有这样的元素:
Python 不明白它是
null什么以及当它明白时要将它转换成什么eval,这不是 Python 对象。有两种解决方案:null = None,它可能会起作用evaljsonas withjson,而不是通过不安全eval使用库json和函数json.loads(script_raw)将结构解析json为 python 对象