Можно ли изменить родительский элемент элемента html с помощью python 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>

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

Но разве вопрос не должен быть больше похожим на то, что я пробовал это, но это не привело к тому, и теперь, как мне это исправить? а не просто Это возможно ..

DirtyBit 08.01.2019 12:30

@ user5173426 да, как вы говорите, гениальный человек, я даже не пробовал это последние 2 часа.

cnian 08.01.2019 12:40

Вы хотите создать новый HTML-документ? И если да, ПОЧЕМУ вы этого хотите?

Andersson 08.01.2019 13:03
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
3
394
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Нет практического опыта работы с 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, вы можете попробовать добавить их вместо притинга, может так?

держите свои выстрелы такими точными. Я просто просматриваю вопросы и вместо того, чтобы найти предыдущего брата, я просто добавляю ответ с этим индексом. в конце концов, на каждый вопрос должен быть ответ, не так ли? :)

cnian 08.01.2019 13:23

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

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>

Другие вопросы по теме