假设工作示例代码的属性错误

Atribute error on a suposedly working example code

我正在尝试 Cookbooks 的解决方案。预期输出为

4243456

但我一直收到错误消息

Error: AttributeError: 'NoneType' object has no attribute 'group'

import re
from bs4 import BeautifulSoup


html = """
 <div class="heading-dom view">
     <script type="application/javascript">
        window.realty = {"user_id":4243456};
        <!--window.agency = < %- JSON.stringify(agency) % >;-->
        <!--window.agency = < %- JSON.stringify({}) % >-->
     </script>
</div>"""

pattern = re.compile(r'\{"user_id"\s*:\s*(\d+)\}')
soup = BeautifulSoup(html, "html.parser")
script = soup.find("script", text=pattern)

print(pattern.search(script.text).group(1))

变量 script 中没有文本。当我尝试这个时:

print(script.text)

这是我得到的输出:

''

我认为您正在尝试将变量 script 从数据类型 bs4.element.Tag 转换为 str。为此,请将最后一行更改为:

print(pattern.search(str(script)).group(1))

输出:

4243456

完整代码如下:

import re
from bs4 import BeautifulSoup


html = """
 <div class="heading-dom view">
     <script type="application/javascript">
        window.realty = {"user_id":4243456};
        <!--window.agency = < %- JSON.stringify(agency) % >;-->
        <!--window.agency = < %- JSON.stringify({}) % >-->
     </script>
</div>"""

pattern = re.compile(r'\{"user_id"\s*:\s*(\d+)\}')
soup = BeautifulSoup(html, "html.parser")
script = soup.find("script", text=pattern)

print(pattern.search(str(script)).group(1))