【发布时间】:2021-04-12 19:12:35
【问题描述】:
我尝试从
这里有什么问题?
html_doc = """
<script>
var modelData = {
"hlsUrl": "null",
"account": "4LH7J44IYPAGEZEY6E3UL"
}
</script>
"""
soup = BeautifulSoup(html_doc, "html.parser")
# locate the script, get the contents
script_text = soup.select_one("script").contents[0]
# get javascript object inside the script
model_data = re.search(r"modelData = ({.*?});", script_text, flags=re.S)
print(model_data) # RETURNS None - why?
model_data = model_data.group(1)
# "convert" the javascript object to json-valid object
model_data = re.sub(
r"^\s*([^:\s]+):", r'"\1":', model_data.replace("'", '"'), flags=re.M
)
# json decode the object
model_data = json.loads(model_data)
# print the data
print(model_data["account"])
更新问题:
在接受与给定响应有效的答案后,我发现我遗漏了一条重要信息。
完整的回应是这样的:
{
"hlsUrl": "null",
"account": "1V2FO4K7ME78RV09VXNEC",
"packageName": "null",
isActive: false
}
这里显示 isActive 不是一个类似 json 的对象或它的名字,所以它现在给了我以下错误:
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 5 column 9 (char 111)
【问题讨论】:
-
group(0)?它是基于 0 索引的 -
嗯,好的,谢谢你:),但它仍然不会改变'model_data'返回无。
-
因为正则表达式模式不正确
-
你能详细说明一下,也许能帮我把它做好吗?
-
您确定响应没有引号?如果没有引号不是有效的 JSON。
标签: python python-3.x beautifulsoup