Как получить текст с пробелами?
Берём таблицу из https://www.sravni.ru/bank/gazprombank/debetovaja-karta/visagold/umnaya/?currency=RUB
Есть такой код:
import requests
from lxml import html
from bs4 import BeautifulSoup
url = 'https://www.sravni.ru/bank/gazprombank/debetovaja-karta/visagold/umnaya/?currency=RUB'
r = requests.get(url)
page = r.text
def get_table():
data = []
global page
import unicodedata
un = unicodedata.normalize
soup = BeautifulSoup(page, "html.parser")
table = soup.find('table')
table_body = table.find('tbody')
rows = table_body.find_all('tr')
for row in rows:
cols = row.find_all('td')
cols = [un("NFKD",ele.text.strip())+' ' for ele in cols]#
data.append([ele for ele in cols if ele])
return data
print(get_table())
А как получить с пробелами ?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ответ подсмотрел здесь.
Замените это:
ele.text.strip()
На такую конструкцию:
" ".join(item.strip() for item in ele.find_all(text=True))
Результат:
[['SMS-информирование ', 'Первый 3 мес Бесплатно Следующий мес 59 ₽ '], ['Обслуживание Обслуживание дополнительной карты ', 'Бесплатно , если сумма покупок от 5000 ₽ или сумма остатка от 30000 ₽ 99 ₽ в месяц, если сумма покупок до 4999 ₽ или сумма остатка до 29999 ₽ дополнительно не взимается: при поступлении зарплаты на карту банка в сумме от 15 000 ₽; при наличии у клиента действующего кредитного договора, заключенного в банке '], ['Выпуск карты ', 'Бесплатно '], ['Выпуск дополнительной карты ', '200 ₽ 1 дополнительная карта бесплатно '], ['Перевыпуск карты ', '300 ₽ '], ['Снятие собственных средств в банкомате своего банка Снятие собственных средств в офисах своего банка ', 'Бесплатно '], ['Снятие собственных средств в банкомате стороннего банка Снятие собственных средств в банкомате банка-партнера Снятие собственных средств в офисах стороннего банка Снятие собственных средств в офисах банка-партнера ', '1.5% от суммы операции, но не менее чем 200 ₽ бесплатно первые 3 операции в месяц на сумму до 100 000 ₽; со списком банков-участников корпоративной сети можно ознакомиться на сайте банка '], ['Лимит: наличные ', 'до 200000 ₽ в день '], ['Лимит: наличные ', 'до 1500000 ₽ в месяц ']]
Правда, в этом случае будут наоборот местами лишние пробелы.
Если убрать ещё +' ', то хотя бы в конце лишних пробелов не будет.
