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

时间:2020-09-22 09:06:39

标签: python python-3.x web-scraping python-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

如何使用请求获取并重新获得上述内容?

1 个答案:

答案 0 :(得分:1)

哎呀,让我们假设我不是白痴,我没有混淆想要的输出与得到的输出。

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

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

regex101.com

所示

说明:

我正在使用正向前行,它告诉正则表达式在某个位置处,应该在文本中跟随该位置。在我们的情况下,匹配应在以下位置结束:逗号,多个换行符和空格,最后是"responseMetadata"。正如您在提供的链接中看到的那样,整个匹配一直是DealDetails直到结束,并且第二组是您想要的输出。

再次,让我们假设我无法阅读,这就是为什么我搞砸了您得到的输出与预期的结果