Python 使用beautifulsoup查找不带标记的json对象

Python 使用beautifulsoup查找不带标记的json对象,python,beautifulsoup,Python,Beautifulsoup,假设我们有以下内容 你好,世界! 这里有一些文字 {foo:{bar:1},alpha:2,beta:{驴子:马} 我想在python中提取dictionary/json对象。 因为它不在标签中,所以我很难使用soup.find_all,用一种简单的方法-使用regex是最好的方法,还是更好的方法?请注意,dict可能位于网页的任何位置,也就是说,并不总是作为网页的最后一部分您可以尝试类似的内容。假设“beta”是每个json对象 h = ''''<title> Hello wor

假设我们有以下内容

你好,世界!
这里有一些文字
{foo:{bar:1},alpha:2,beta:{驴子:马}
我想在python中提取dictionary/json对象。
因为它不在标签中,所以我很难使用
soup.find_all
,用一种简单的方法-使用regex是最好的方法,还是更好的方法?请注意,dict可能位于网页的任何位置,也就是说,并不总是作为网页的最后一部分

您可以尝试类似的内容。假设“beta”是每个json对象

h = ''''<title> Hello world! </title>
<span class="something">Here is some text</span>
{foo:{bar:1},alpha:2,beta:{donkey:horse}}'''
soup = BeautifulSoup(h, "html.parser")
soup.find_all(string=re.compile('beta'))

这是可行的-是否可以只绘制json的一个子集,即
soup.find(string=re.compile(“beta”)
,返回
{“驴子”:“马”}
?您可能需要抓取字典并像其他字典一样解析它。如果json.loads()或类似的东西不起作用,您可以拆分('beta:')然后继续拆分,直到你得到想要的答案。或者有更多正则表达式经验的人可以提供正则表达式语法来提取它。我想我的问题更多,为什么
find
返回整个字典,而不是,比方说,一个最小的字典来完成搜索?它是在搜索
{},(),[]
成对的关键字,即为什么它不返回整个页面,因为它包含单词
beta
哦,我的错。老实说,您可能需要阅读有关此的文档,但我使用的是string=所以它会查找包含beta的文本。您可以使用href=re.compile()以及其他限制返回内容的方法。但我知道的获取部分返回文本的唯一方法是如上所述对其进行操作。实际上,您可以执行以下操作:soup.find(string=re.compile(“onkey”)它将返回相同的结果,我只是碰巧选择了beta。是否有真正的
?在您的示例中,您可以按类名搜索:
class=“something”
['\n{foo:{bar:1},alpha:2,beta:{donkey:horse}}']