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。它似乎工作正常。顺便说一句,这是一个巨大的问题.