Python网页爬虫JSON结果去除换行符(\n)方法咨询
解决爬虫JSON结果中换行符过多的问题
问题出在使用get_text()获取文本时,HTML中的换行符和多余空白会被保留,导致生成的JSON出现大量\n。以下是两种实用的解决方法:
方法1:利用BeautifulSoup自带参数直接处理
get_text()支持strip和separator参数,能直接去除首尾空白并将内部的换行/多空格替换为单个空格:
修改后的代码:
from bs4 import BeautifulSoup import json import requests url = 'https://storage.googleapis.com/infosimples-public/commercia/case/product.html#' resposta_final = {} response = requests.get(url) parsed_html = BeautifulSoup(response.content, 'html.parser') # 处理skus字段,去除换行并合并多余空格 resposta_final['skus'] = parsed_html.select_one('.skus-area').get_text(strip=True, separator=' ') # 处理properties列表 resposta_final['properties'] = [element.get_text(strip=True, separator=' ') for element in parsed_html.select(".pure-table.pure-table-bordered tr")] # 处理reviews列表 resposta_final['reviews'] = [element.get_text(strip=True, separator=' ') for element in parsed_html.select(".review-box")] json_resposta_final = json.dumps(resposta_final) with open('produto.json','w') as arquivo_json: arquivo_json.write(json_resposta_final)
方法2:正则表达式精细处理(适合复杂空白场景)
如果需要更灵活的空白处理,比如将连续的换行、制表符等统一替换为单个空格,可以用正则表达式:
修改后的代码:
from bs4 import BeautifulSoup import json import requests import re url = 'https://storage.googleapis.com/infosimples-public/commercia/case/product.html#' resposta_final = {} response = requests.get(url) parsed_html = BeautifulSoup(response.content, 'html.parser') def clean_text(text): # 替换所有连续空白字符(换行、空格、制表符等)为单个空格,再去除首尾空白 return re.sub(r'\s+', ' ', text).strip() resposta_final['skus'] = clean_text(parsed_html.select_one('.skus-area').get_text()) resposta_final['properties'] = [clean_text(element.get_text()) for element in parsed_html.select(".pure-table.pure-table-bordered tr")] resposta_final['reviews'] = [clean_text(element.get_text()) for element in parsed_html.select(".review-box")] json_resposta_final = json.dumps(resposta_final) with open('produto.json','w') as arquivo_json: arquivo_json.write(json_resposta_final)
两种方法都能有效去除JSON中的多余换行符,方法1更简洁,方法2适合需要自定义空白处理规则的场景。
内容的提问来源于stack exchange,提问作者zssp
相关产品推荐
相关产品推荐

