Обернуть вложенный материал тегами

12
Александр
На сайте с 17.07.2009
Offline
371
#11
Anamnado #:

берем  функцией замещения H2 меняем На <div> <H2>    а  h3  на </div><H3><div>

следующая операция  H4 меняем На <div> <H4>    а  h5  на </div><H6><div>

Там нужно не только заголовки, но и всё что за ними. И вы правы, сама соль в том, что бы грамотно теги закрыть.
Сайты на WordPress тут просто летают! (https://vk.cc/atAGUU)
Anamnado
На сайте с 08.02.2010
Offline
242
#12
aleksandrbol #:
что бы грамотно теги закрыть

ищите за что зацепиться! хотя бы по нескольким "или"  

то есть ну примерно  h3 есть h4 нет  - это основная проверка.

то  ищем </p> или  </ul>....... ..... ******     это может быть даже точка "."  при условии что предложение строго одно всегда...   (все завить от того что имеем..)  и лепим!  - </p></div> Или    .</div

T7
На сайте с 19.09.2018
Offline
63
#13

Парсинг ХТМЛ с пыха на питон перевел. За 20 мин такая задача решается

from bs4 import BeautifulSoup
import itertools

t = '''
<h2>заголовок1</h2>
тут текст
       <h3>заголовок2</h3>
       тут текст
       <p>еще текст</p>
       <h3>заголовок3</h3>
       тут текст
<h2>заголовок4</h2>
тут текст
'''
print(t, '\n-----------')
soup = BeautifulSoup(t, 'lxml')
hh = ('h1','h2','h3','h4')

def wrap(elm):
    for el in elm:
        els = [i for i in itertools.takewhile( lambda x: x.name not in [el.name], el.next_siblings)]
        div = soup.new_tag('div')
        el.wrap(div)
        for tag in els:
            div.append(tag)

for i in hh:
    h = soup.find_all(i)
    wrap(h)

print(soup.prettify())

Результат

<html>
<body>
  <div>
   <h2>
    заголовок1
   </h2>
   тут текст
   <div>
    <h3>
     заголовок2
    </h3>
    тут текст
    <p>
     еще текст
    </p>
   </div>
   <div>
    <h3>
     заголовок3
    </h3>
    тут текст
   </div>
  </div>
  <div>
   <h2>
    заголовок4
   </h2>
   тут текст
  </div>
</body>
</html>
Александр
На сайте с 17.07.2009
Offline
371
#14
timo-71 #:

Парсинг ХТМЛ с пыха на питон перевел. За 20 мин такая задача решается

Результат

Благодарю! А на php это не реализовать? Придётся учить пайтон. :)
SeVlad
На сайте с 03.11.2008
Offline
1609
#15
aleksandrbol #:
А на php это не реализовать? Придётся учить пайтон. :)

Не, ну реально.. если ты знаешь хотя бы основы php, то 15 мин гугления и ещё полчаса максиму на пробы-эксперименты и ты обретаешь не только решение, а очень полезные знания на годы вперёд.

Вот если бы ты что-то делал, а у тебя не получалось - это другое дело.


aleksandrbol #:
Придётся учить пайтон. :)
Т.е. тебе не на php надо, а пофик на чём? Тогда это в любом нормальном блокноте решается.
Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
T7
На сайте с 19.09.2018
Offline
63
#16
aleksandrbol #:
Благодарю! А на php это не реализовать? Придётся учить пайтон

На пхп похожие библиотеки есть, если правильно помню pq php

Не очень элегантный алгоритм, но работает:  Ищем селектор, обходим некст элементы и если тег!=тегу селектора собираем их и обертываем дивом.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий