无法使用请求和重新解析页面源中的某些内容
Unable to parse some content from page source using requests and re
我正在尝试使用 requests 和 re 模块从网页解析交易详情。我希望获取的内容位于页面源代码中的某个脚本标记内。当我尝试下面的尝试时,我得到了一部分内容。但是,我希望获得从 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。
如何使用requests和re获取上述内容?
咳咳,假设我不是白痴,我没有混淆你想要的输出和你得到的输出。
继续前进,这是我所做的:
\"dealDetails\"\s*:\s*\{[\n\r\s]+(.+?)(?=,?[\n\r\s]+\"responseMetadata\")
如此处所示 regex101.com
解释:
我正在使用正向先行,它告诉正则表达式在某个位置,文本中应该在该位置之后。在我们的例子中,匹配应该在一个位置结束,后面跟着一个逗号、多个换行符和空格,最后是 "responseMetadata"
。正如您在提供的 link 中看到的那样,整个匹配都是 dealDetails 直到结束,并且 第二组 是您想要的输出。
再一次,假设我无法阅读,这就是为什么我搞砸了你得到的输出与你期望的输出
我正在尝试使用 requests 和 re 模块从网页解析交易详情。我希望获取的内容位于页面源代码中的某个脚本标记内。当我尝试下面的尝试时,我得到了一部分内容。但是,我希望获得从 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。
如何使用requests和re获取上述内容?
咳咳,假设我不是白痴,我没有混淆你想要的输出和你得到的输出。
继续前进,这是我所做的:
\"dealDetails\"\s*:\s*\{[\n\r\s]+(.+?)(?=,?[\n\r\s]+\"responseMetadata\")
如此处所示 regex101.com
解释:
我正在使用正向先行,它告诉正则表达式在某个位置,文本中应该在该位置之后。在我们的例子中,匹配应该在一个位置结束,后面跟着一个逗号、多个换行符和空格,最后是 "responseMetadata"
。正如您在提供的 link 中看到的那样,整个匹配都是 dealDetails 直到结束,并且 第二组 是您想要的输出。
再一次,假设我无法阅读,这就是为什么我搞砸了你得到的输出与你期望的输出