我正在尝试使用请求和重新模块来解析网页上的交易详细信息。我希望抓取的内容在页面源代码中的某些脚本标签内。当我尝试下面的尝试时,我得到了一部分内容。但是,我希望获得从dealDetails
到responseMetadata
的全部内容。
我尝试过:
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。
如何使用请求获取并重新获得上述内容?
答案 0 :(得分:1)
哎呀,让我们假设我不是白痴,我没有混淆想要的输出与得到的输出。
继续前进,这是我所做的:
\"dealDetails\"\s*:\s*\{[\n\r\s]+(.+?)(?=,?[\n\r\s]+\"responseMetadata\")
所示
我正在使用正向前行,它告诉正则表达式在某个位置处,应该在文本中跟随该位置。在我们的情况下,匹配应在以下位置结束:逗号,多个换行符和空格,最后是"responseMetadata"
。正如您在提供的链接中看到的那样,整个匹配一直是DealDetails直到结束,并且第二组是您想要的输出。
再次,让我们假设我无法阅读,这就是为什么我搞砸了您得到的输出与预期的结果