python code, site scraping returning /n, in .JSON

Viewed 45

I'm scraping data from a website, with python, the code below returns the data in a .json file I wanted to know how to remove these "/n"

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')

resposta_final['skus']  = parsed_html.select_one('.skus-area').get_text()

resposta_final['properties'] = [element.get_text() for element in parsed_html.select(".pure-table.pure-table-bordered tr")]


resposta_final['reviews'] = [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)

result in .json

"skus": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n                  Rubber Duck MK Ultra - Original\n                \n\n                  $ 7.95\n                \n\n                  $ 9.95\n                \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n                  Rubber Duck MK Ultra - Summer Version\n                \nOut of stock\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n                  Rubber Duck MK Ultra - Batman Version\n                \n\n                  $ 14.95\n                \n\n\n\n\n\n\n",
    "properties": [
        "\nColor\nVarious\n",
        "\nMaterial\nRubber\n",
        "\nShape\nDucky\n",
        "\nSize\nMedium\n",
        "\nWeight\n1.5 kg\n",
        "\nRadioactivity Level\nLow\n",
        "\nProperty\nValue\n",
        "\nNutritious value\n-\n",
        "\nOrigin\nCamboja\n",
        "\nAllergenics\nNone\n",
        "\nRecyclable?\nYes\n",
        "\nHarmful?\nNo\n",
        "\nHealth benefits\nNone\n",
        "\nStorage temperature\n0 - 25\u00baC\n"
    ],
    "reviews": [
        "\n\n\n\n\n\nLouisa Eliel\n28/07/2021\n\u2605\u2605\u2605\u2605\u2606\n\n\nVery good rubber ducks, however I think they are a bit too big for me.\n",
        "\n\n\n\n\n\nKairo Josu\u00e9\n12/05/2021\n\u2605\u2606\u2606\u2606\u2606\n\n\nP\u00e9ssima qualidade. J\u00e1 n\u00e3o fazem patos de borracha como antigamente.\n",
        "\n\n\n\n\n\nVictor Huey\n03/04/2021\n\u2605\u2605\u2605\u2605\u2605\n\n\nVery good\n"
    ]

url https://storage.googleapis.com/infosimples-public/commercia/case/product.html

1 Answers

While using .get_text() set additional parameter to strip all the newline characters:

.get_text(strip=True)

Example

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')

resposta_final['skus']  = parsed_html.select_one('.skus-area').get_text(strip=True)
resposta_final['properties'] = [element.get_text(strip=True) for element in parsed_html.select(".pure-table.pure-table-bordered tr")]
resposta_final['reviews'] = [element.get_text(strip=True) for element in parsed_html.select(".review-box")]


json_resposta_final = json.dumps(resposta_final)

JSON

{"skus": "Rubber Duck MK Ultra - Original$ 7.95$ 9.95Rubber Duck MK Ultra - Summer VersionOut of stockRubber Duck MK Ultra - Batman Version$ 14.95", "properties": ["ColorVarious", "MaterialRubber", "ShapeDucky", "SizeMedium", "Weight1.5 kg", "Radioactivity LevelLow", "PropertyValue", "Nutritious value-", "OriginCamboja", "AllergenicsNone", "Recyclable?Yes", "Harmful?No", "Health benefitsNone", "Storage temperature0 - 25\\u00baC"], "reviews": ["Louisa Eliel28/07/2021\\u2605\\u2605\\u2605\\u2605\\u2606Very good rubber ducks, however I think they are a bit too big for me.", "Kairo Josu\\u00e912/05/2021\\u2605\\u2606\\u2606\\u2606\\u2606P\\u00e9ssima qualidade. J\\u00e1 n\\u00e3o fazem patos de borracha como antigamente.", "Victor Huey03/04/2021\\u2605\\u2605\\u2605\\u2605\\u2605Very good"]}
Related