Форум сайта python.su
Здравствуйте!
В питоне и BS новичек. Долго гуглил, но не нашел, как решить проблему (может не в ту сторону гуглил)
Задача:
Разбить текст посредством BS по произвольному тэгу. Например в коде страницы есть такой кусок:
<option value="6">Ассам</option><option value="7">Кения</option><option value="8">Руанда</option><option value="9">Цейлон</option>
resp = BeautifulSoup(open(p, encoding='utf-8')) resp.body.text
Офлайн
Доки на русском. Смотреть в сторону children, выбираем родителя, пробегаем по деткам и пакуем нужным образом. Все просто)
Отредактировано Vladimirv (Июнь 18, 2018 15:06:07)
Офлайн
Vladimirv
Благодарю за ответ!
Однако я, наверное, не совсем корректно сформулировал задачу. Мне нужно было, что бы НЕ склеивались слова, вне зависимости от того, внутри каких тэгов они расположены. Нужен некий универсальный способ, применимый к любой произвольной вэб-странице. Т.е. искать родителей тоже не вариант.
Пока нашел вот такой вариан:
resp = BeautifulSoup(open(p, encoding='utf-8')) clean_text = ' '.join(resp.body.findAll(text=True))
Вход для клиентов Добрый день <span id="user_email"></span> Личный кабинет Выйти Регистрация
</span><!-- <span id="user_email"></span>-->
for comment in resp.findAll(text=lambda text: isinstance(text, bs4.Comment)): comment.extract()
resp = BeautifulSoup(open(p, encoding='utf-8')) # Удаляем все noindex for i in resp.findAll('noindex'): resp.noindex.decompose() # Удаляем скрипты for i in resp.findAll('script'): resp.script.decompose() #Удаляем закооментированные строки for comment in resp.findAll(text=lambda text: isinstance(text, bs4.Comment)): comment.extract() #Получаем строку текста clean_text = ' '.join(resp.body.findAll(text=True))
Отредактировано Sterh (Июнь 18, 2018 18:38:46)
Офлайн