Как сделать так, чтобы при парсинге страницы, каждые данные в квадратных скобках переносились на новую строку при выводе

Рейтинг: 0Ответов: 1Опубликовано: 21.07.2023

import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import json


driver = webdriver.Chrome()
# driver.maximize_window()
driver.get('https://www.chitai-gorod.ru/search?phrase=манга')
# for i in range(4):
#     pag = driver.find_element(By.CLASS_NAME, 'pagination__button pagination__button--icon')
#     pag.click()


page = driver.page_source

html = BeautifulSoup(page, 'lxml')
mangas = html.find_all('article', class_='product-card product-card product')

m = []
n = []
for names in mangas:
    if names['data-chg-product-name'] != '':
        names.get_text(strip=True)
        n.append(names.text.strip().split('\n').)
print(n)

Нужно чтобы все данные ниже были с новой строки

[['1\xa0049 ₽', '     ', '    842 ₽', '   ', '  20', '   ', '    Магическая битва 8. Книги 15-16: Инцидент в Сибуе: Трансформация. Закрыть врата: манга', '   ', '    Гэгэ Акутами', '                4.49 101  (101)    ', '      Купить'], ['842 ₽', '    ', '    Магическая битва. Книга 7. Инцидент в Сибуе: Раскат грома. Правый и неправый', '   ', '    Гэгэ Акутами', '                4.39 195  (195)    ', '      Купить']... и так далее

и подскажите пожалуйста, как можно убрать лишние запятые.

Ответы

▲ 0Принят
>>> n=[['1\xa0049 ₽', '     ', '    842 ₽', '   ', '  20', '   ', '    Магическая битва 8. Книги 15-16: Инцидент в Сибуе: Трансформация. Закрыть врата: манга', '   ', '    Гэгэ Акутами', '                4.49 101  (101)    ', '      Купить'], ['842 ₽', '    ', '    Магическая битва. Книга 7. Инцидент в Сибуе: Раскат грома. Правый и неправый', '   ', '    Гэгэ Акутами', '                4.39 195  (195)    ', '      Купить']]

>>> import pprint
>>> pprint.pprint(n)

[['1\xa0049 ₽',
  '     ',
  '    842 ₽',
  '   ',
  '  20',
  '   ',
  '    Магическая битва 8. Книги 15-16: Инцидент в Сибуе: Трансформация. '
  'Закрыть врата: манга',
  '   ',
  '    Гэгэ Акутами',
  '                4.49 101  (101)    ',
  '      Купить'],
 ['842 ₽',
  '    ',
  '    Магическая битва. Книга 7. Инцидент в Сибуе: Раскат грома. Правый и '
  'неправый',
  '   ',
  '    Гэгэ Акутами',
  '                4.39 195  (195)    ',
  '      Купить']]
pprint.pprint(n)
[['1\xa0049 ₽',
  '     ',
  '    842 ₽',
  '   ',
  '  20',
  '   ',
  '    Магическая битва 8. Книги 15-16: Инцидент в Сибуе: Трансформация. '
  'Закрыть врата: манга',
  '   ',
  '    Гэгэ Акутами',
  '                4.49 101  (101)    ',
  '      Купить'],
 ['842 ₽',
  '    ',
  '    Магическая битва. Книга 7. Инцидент в Сибуе: Раскат грома. Правый и '
  'неправый',
  '   ',
  '    Гэгэ Акутами',
  '                4.39 195  (195)    ',
  '      Купить']]

>>> n=[ [s.strip() for s in l] for l in n ]
>>> pprint.pprint(n)
[['1\xa0049 ₽',
  '',
  '842 ₽',
  '',
  '20',
  '',
  'Магическая битва 8. Книги 15-16: Инцидент в Сибуе: Трансформация. Закрыть '
  'врата: манга',
  '',
  'Гэгэ Акутами',
  '4.49 101  (101)',
  'Купить'],
 ['842 ₽',
  '',
  'Магическая битва. Книга 7. Инцидент в Сибуе: Раскат грома. Правый и '
  'неправый',
  '',
  'Гэгэ Акутами',
  '4.39 195  (195)',
  'Купить']]

>>> n=[[s for s in l if s] for l in n]
>>> pprint.pprint(n)
[['1\xa0049 ₽',
  '842 ₽',
  '20',
  'Магическая битва 8. Книги 15-16: Инцидент в Сибуе: Трансформация. Закрыть '
  'врата: манга',
  'Гэгэ Акутами',
  '4.49 101  (101)',
  'Купить'],
 ['842 ₽',
  'Магическая битва. Книга 7. Инцидент в Сибуе: Раскат грома. Правый и '
  'неправый',
  'Гэгэ Акутами',
  '4.39 195  (195)',
  'Купить']]

Или если дело только в выводе, а не в массиве...

>>> for l in n: print(*l, sep='')
... 
1 049 ₽         842 ₽     20       Магическая битва 8. Книги 15-16: Инцидент в Сибуе: Трансформация. Закрыть врата: манга       Гэгэ Акутами                4.49 101  (101)          Купить
842 ₽        Магическая битва. Книга 7. Инцидент в Сибуе: Раскат грома. Правый и неправый       Гэгэ Акутами                4.39 195  (195)          Купить