无法使用请求和重新解析页面源中的某些内容

Unable to parse some content from page source using requests and re

我正在尝试使用 requests 和 re 模块从网页解析交易详情。我希望获取的内容位于页面源代码中的某个脚本标记内。当我尝试下面的尝试时,我得到了一部分内容。但是,我希望获得从 dealDetailsresponseMetadata.

的完整内容

webpage link

我试过:

import re
import requests

link = 'https://www.amazon.co.uk/gp/deals?ref_=nav_cs_gb'

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36"}

r = requests.get(link,headers=headers)
deals = re.findall(r"dealDetails[^{]+(.*?}),[\s\S]+responseMetadata",r.text,re.DOTALL)[0]
print(deals)

它当前产生的输出是this

我想要获取的输出是 this

如何使用requests和re获取上述内容?

咳咳,假设我不是白痴,我没有混淆你想要的输出和你得到的输出。

继续前进,这是我所做的:

\"dealDetails\"\s*:\s*\{[\n\r\s]+(.+?)(?=,?[\n\r\s]+\"responseMetadata\")

如此处所示 regex101.com

解释:

我正在使用正向先行,它告诉正则表达式在某个位置,文本中应该在该位置之后。在我们的例子中,匹配应该在一个位置结束,后面跟着一个逗号、多个换行符和空格,最后是 "responseMetadata"。正如您在提供的 link 中看到的那样,整个匹配都是 dealDetails 直到结束,并且 第二组 是您想要的输出。

再一次,假设我无法阅读,这就是为什么我搞砸了你得到的输出与你期望的输出