Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用请求和请求解析来自页面源的某些内容_Python_Python 3.x_Web Scraping_Python Requests_Re - Fatal编程技术网

Python 无法使用请求和请求解析来自页面源的某些内容

Python 无法使用请求和请求解析来自页面源的某些内容,python,python-3.x,web-scraping,python-requests,re,Python,Python 3.x,Web Scraping,Python Requests,Re,我正在尝试使用请求和重新模块从网页解析交易详细信息。我希望获取的内容位于页面源代码中的某个脚本标记内。当我尝试下面的尝试时,我得到了部分内容。但是,我希望获得从dealDetails到responseMetadata的全部内容 我试过: import re import requests link = 'https://www.amazon.co.uk/gp/deals?ref_=nav_cs_gb' headers = {"User-Agent":"Mozi

我正在尝试使用请求和重新模块从网页解析交易详细信息。我希望获取的内容位于页面源代码中的某个脚本标记内。当我尝试下面的尝试时,我得到了部分内容。但是,我希望获得从
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)
它当前生成的输出为

我希望获取的输出是


如何使用请求和回复获得上述内容?啊哼,让我们假设我不是白痴,我没有混淆你想要的输出和你得到的输出

继续前进,下面是我所做的:

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

说明: 我使用的是肯定的lookaheads,它告诉正则表达式,在某个位置,文本中应该有东西在该位置之后。在我们的例子中,匹配应该在一个位置结束,后面是逗号、多个换行符和空格,最后是
“responseMetadata”
。正如您在提供的链接中所看到的,整个匹配直到结束都是dealDetails,而第二组是您想要的输出


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

不要发布来自其他来源的输出/代码。如果该来源停止工作,那么问题/答案在未来将不再有用。如果问题需要任何代码/输出,请将其发布在问题正文中的单独代码块中。如果我这样尝试
re.findall(r“dealDetails[^{]+(.*)responseMetadata],r.text,re.DOTALL)
,它可以工作,但包括最后一个
"
我不想这样。但是,我希望在没有后期处理的情况下首先使用regex获得所需的部分。我看到这篇文章已经很晚了,你的问题已经解决了还是你还在寻求解决方案?不,还没有解决。谢谢你问@Robo Mop。它似乎工作正常。顺便说一句,这是一个巨大的问题.