我正在尝试从我的批发商网站抓取产品数据信息,该网站使用 Prestashop CMS 并使用混合的 JSON/Javascript 内容。 我用 python BeautifulSoup 和请求编写了一个脚本。 我知道这些不是处理 JS 的有效库,但我想由于网站的结构,我不需要使用 selenium。底部有一个标签,为我提供了我需要的所有信息。但是这里有一个问题,因为当我爬取类似json的代码块时,有javascript函数等。我开始学习python才5天,所以我什至不知道我的方法是否正确。我想解析 JSON 内容并将其放入数据库中。
这是我的代码片段,用于抓取数据并打印到屏幕;
这就是我得到的回应。
感谢您阅读并花时间陪伴我。
我尝试使用正则表达式通过识别 {、}、[ 和 ] 等字符来匹配类似于 JSON 结构的模式,但没有成功。
我尝试使用正则表达式通过识别 {、}、[ 和 ] 等字符来匹配类似于 JSON 结构的模式,但没有成功。
可能是因为
{}
可以嵌套,并且没有正则表达式能够匹配任意嵌套的{}
。
好消息是您不需要任意深度!如果您知道嵌套层数永远不会超过 3 层,您可以编写与之匹配的模式:
import re, json
pattern = r'\{(?:[^{}]|NEST)+\}'
for i in range(3):
pattern = pattern.replace('NEST', pattern)
matches = re.findall(pattern, script)
for match in matches:
print(json.loads(match))
# {'id_attribute': '4196', 'id_attribute_group': '36', 'attribute': 'antartica_g', 'group': 'couleur'}
# {'id_attribute': '4197', 'id_attribute_group': '36', 'attribute': 'babe_pink', 'group': 'couleur'}
# {'id_attribute': '4201', 'id_attribute_group': '36', 'attribute': 'classic_black', 'group': 'couleur'}
# ...
# {'18268': {'attributes_values': {'36'...
未来的改进:
json.loads
上的错误,以防您匹配非 JSON 的内容