Python 如何从解析的HTML打印特定元素?
我正试图从我的BS4解析的HTML代码字符串中打印出特定的行 我希望我的最终结果如下所示: 如何打印此问题 a。我想打印这个 b。我也想打印这个 c。我也想把这个打印出来 d。我也想把这个打印出来 正确答案是:我想打印这个 并复制到文本编辑器,以便更轻松地用眼睛导航。我的最终结果包括打印第23、33、39、45、51和63行。我如何做到这一点Python 如何从解析的HTML打印特定元素?,python,html,python-3.x,parsing,beautifulsoup,Python,Html,Python 3.x,Parsing,Beautifulsoup,我正试图从我的BS4解析的HTML代码字符串中打印出特定的行 我希望我的最终结果如下所示: 如何打印此问题 a。我想打印这个 b。我也想打印这个 c。我也想把这个打印出来 d。我也想把这个打印出来 正确答案是:我想打印这个 并复制到文本编辑器,以便更轻松地用眼睛导航。我的最终结果包括打印第23、33、39、45、51和63行。我如何做到这一点 <div class="que multichoice deferredfeedback correct" id="q7"> <d
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
我的每个源代码txt文件都包含10个选择题,我希望代码以以下格式打印:
QText
答复0-3
正确答案
(然后重复此循环,直到不再剩余或重复9次)
---现在,它返回以下内容---
QText(x10)
回答0-3(x10)
RightAnswer(x10)
如何更改此选项以完成一个检索1个qtext、4个answer0-3以及1个Right Answer的循环,然后再开始另一个循环?可以使用
标记或类找到所有元素
print(soup.find('div', class_='qtext').text.strip())
# HOW DO I PRINT THIS QUESTION?
for item in soup.find_all('label'):
print(item.text.strip())
# a. I WANT TO PRINT THIS
# b. I WANT TO PRINT THIS TOO
# c. I WANT TO PRINT THIS ALSO
# d. I WANT TO PRINT THIS AS WELL
print(soup.find('div', class_='rightanswer').text.strip())
# THE CORRECT ANSWER IS: I WANT TO PRINT THIS
除了.text.strip()
之外,您还可以使用.get\u text(strip=True)
完整代码:
data = '''
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
'''
from bs4 import BeautifulSoup as BS
soup = BS(data, 'html.parser')
print(soup.find('div', class_='qtext').text.strip())
for item in soup.find_all('label'):
print(item.text.strip())
print(soup.find('div', class_='rightanswer').text.strip())
data = '''
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
'''
from bs4 import BeautifulSoup as BS
soup = BS(data, 'html.parser')
all_questions = soup.find_all('div', class_='qtext')
all_choices = soup.find_all('label')
all_answers = soup.find_all('div', class_='rightanswer')
for x in range(len(all_questions)):
print(all_questions[x].text.strip())
y = x*4
for item in all_choices[y:y+4]:
print(item.text.strip())
print(all_answers[x].text.strip())
print('---')
完整代码-我复制了相同的HTML以模拟两个问题:
data = '''
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
'''
from bs4 import BeautifulSoup as BS
soup = BS(data, 'html.parser')
for questions in soup.find_all('div', class_='multichoice'):
print(questions.find('div', class_='qtext').text.strip())
for item in questions.find_all('label'):
print(item.text.strip())
print(questions.find('div', class_='rightanswer').text.strip())
print('---')
完整代码:
data = '''
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
'''
from bs4 import BeautifulSoup as BS
soup = BS(data, 'html.parser')
print(soup.find('div', class_='qtext').text.strip())
for item in soup.find_all('label'):
print(item.text.strip())
print(soup.find('div', class_='rightanswer').text.strip())
data = '''
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
'''
from bs4 import BeautifulSoup as BS
soup = BS(data, 'html.parser')
all_questions = soup.find_all('div', class_='qtext')
all_choices = soup.find_all('label')
all_answers = soup.find_all('div', class_='rightanswer')
for x in range(len(all_questions)):
print(all_questions[x].text.strip())
y = x*4
for item in all_choices[y:y+4]:
print(item.text.strip())
print(all_answers[x].text.strip())
print('---')
data=''
问题:
7.
对的
标记1.00中的1.00
问题文本
如何打印此问题?
选择一个:
A.我想打印这个
B我也想打印这个
C我也想把这个打印出来
D我也想把这个打印出来
反馈
正确答案是:我想打印这个
问题:
7.
对的
标记1.00中的1.00
问题文本
如何打印此问题?
选择一个:
A.我想打印这个
B我也想打印这个
C我也想把这个打印出来
D我也想把这个打印出来
反馈
正确答案是:我想打印这个
'''
从bs4导入BeautifulSoup作为BS
soup=BS(数据“html.parser”)
所有问题=汤。查找所有问题('div',class='qtext')
全部选项=汤。全部查找('标签')
所有答案=汤。查找所有答案('div',class='rightanswer')
对于范围内的x(len(所有问题)):
打印(所有问题[x].text.strip())
y=x*4
对于所有_选项中的项目[y:y+4]:
打印(item.text.strip())
打印(所有答案[x].text.strip())
打印('--')
始终将代码、错误消息和数据作为有问题的文本,而不是imageshow代码和完整的错误消息。好吧,我省略了一些信息,因为我不知道这可能会如何影响在这个问题上获得帮助。我有多页类似的源代码,每一页都有10次代码迭代。根据这段代码,它列出了所有10个问题,然后列出了所有40个选择题答案,然后列出了所有10个正确答案。如何更改此选项以按以下顺序返回-问题,4个多选项答案,正确答案,重复x9?您可以找到保留一个问题的所有元素(问题,答案,正确答案)的标记-即,
-首先查找所有这些元素,然后在这些元素内搜索问题,答案,正确答案。或者您可以尝试使用for
-循环和/或zip()
对元素进行分组-即对于问题,请在zip中更正答案(所有问题,所有正确答案)
,对于选项,您可以使用slice-对范围(0,40,4)中的x使用:选项[x:x+4]
我在两种方法的答案示例中添加了这两种方法。
data = '''
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
<div class="que multichoice deferredfeedback correct" id="q7">
<div class="info">
<h3 class="no">
Question
<span class="qno">
7
</span>
</h3>
<div class="state">
Correct
</div>
<div class="grade">
Mark 1.00 out of 1.00
</div>
</div>
<div class="content">
<div class="formulation">
<h4 class="accesshide">
Question text
</h4>
<input name="q7391425:7_:sequencecheck" type="hidden" value="3"/>
<div class="qtext">
HOW DO I PRINT THIS QUESTION?
</div>
<div class="ablock">
<div class="prompt">
Select one:
</div>
<div class="answer">
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer0" name="q7391425:7_answer" type="radio" value="0"/>
<label for="q7391425:7_answer0">
a. I WANT TO PRINT THIS
</label>
</div>
<div class="r1 correct">
<input checked="checked" disabled="disabled" id="q7391425:7_answer1" name="q7391425:7_answer" type="radio" value="1"/>
<label for="q7391425:7_answer1">
b. I WANT TO PRINT THIS TOO
</label>
</div>
<div class="r0">
<input disabled="disabled" id="q7391425:7_answer2" name="q7391425:7_answer" type="radio" value="2"/>
<label for="q7391425:7_answer2">
c. I WANT TO PRINT THIS ALSO
</label>
</div>
<div class="r1">
<input disabled="disabled" id="q7391425:7_answer3" name="q7391425:7_answer" type="radio" value="3"/>
<label for="q7391425:7_answer3">
d. I WANT TO PRINT THIS AS WELL
</label>
</div>
</div>
</div>
</div>
<div class="outcome">
<h4 class="accesshide">
Feedback
</h4>
<div class="feedback">
<div class="rightanswer">
THE CORRECT ANSWER IS: I WANT TO PRINT THIS
</div>
</div>
</div>
</div>
</div>
'''
from bs4 import BeautifulSoup as BS
soup = BS(data, 'html.parser')
all_questions = soup.find_all('div', class_='qtext')
all_choices = soup.find_all('label')
all_answers = soup.find_all('div', class_='rightanswer')
for x in range(len(all_questions)):
print(all_questions[x].text.strip())
y = x*4
for item in all_choices[y:y+4]:
print(item.text.strip())
print(all_answers[x].text.strip())
print('---')