问题描述
我正在抓取该网站:https://www.epicery.com/c/promos?gclid=CjwKCAjw97P5BRBQEiwAGflV6bGzNEAz7MTIrgelBkTR277v3lhStP5tH0wgxuLj1ytlcQAAjb-cxBoCsVwQAvD_BwE 我正在尝试在脚本路径中检索一些信息,例如描述。 我使用xpath获取了脚本内容,并进行了一些正则表达式,然后尝试将其加载为json:
script_path = response.xpath('/html/body/script[1]').get()
j_list = re.findall(r'\[(.*)\}\]',script_path)
j = j[0].replace("'","")
json_script = json.loads(j)
但是我遇到以下无法解决的错误:
raise JSONDecodeError("Extra data",s,end)
json.decoder.JSONDecodeError: Extra data: line 1 column 152446 (char 152445)
解决方法
我不确定您想要什么,但这对我有用:
def parse(self,response):
taxons_str = response.xpath('//script[contains(.,"var taxons")]/text()').re_first(r'(?s)var taxons = (.+?)var shops')
if taxons_str:
taxons = json.loads(taxons_str)
for product in taxons:
process_your_product(product)