Можно ли изменить родителя элемента HTML с помощью Python Beautifulsoup - PullRequest
0 голосов
/ 08 января 2019

Давайте предположим, что у меня есть HTML как:

<div class="question-div"></div>
<div class="answer-div"></div>
<div class="question-div"></div>
<div class="answer-div"></div>
<div class="question-div"></div>
<div class="answer-div"></div>

Я хочу переместить все divs с классом answer-div в предыдущее question-div. Могу ли я справиться с этим с Beautifulsoup?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы также можете использовать insert

from bs4 import BeautifulSoup
html="""
<div class="question-div"></div>
<div class="answer-div"></div>
<div class="question-div"></div>
<div class="answer-div"></div>
<div class="question-div"></div>
<div class="answer-div"></div>
"""
soup=BeautifulSoup(html,'html.parser')
for div in soup.findAll('div',{"class":"answer-div"}):
    div.find_previous_sibling('div').insert(0,div)
print(soup)

выход

<div class="question-div"><div class="answer-div"></div></div>

<div class="question-div"><div class="answer-div"></div></div>

<div class="question-div"><div class="answer-div"></div></div>
0 голосов
/ 08 января 2019

Нет опыта работы с beautifulsoup, но я сделаю это!

Я смотрю на это так, вы найдете все div's с question и answer по отдельности.

div_ques_Blocks = soup.find_all('div', class_="question-div")
div_ans_Blocks = soup.find_all('div', class_="answer-div")

, а затем переберите question-div, чтобы вставить / добавить answer-div

for divtag in div_ans_Blocks :
       print divtag.find_previous_sibling('div')

Если приведенный выше оператор print дает вам все answer-div, вы можете попробовать добавить их вместо печати, , может быть, вот так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...