我想打印带有所有选项的类名。对于错误的答案,它只是radio-button-click-target,但是有了正确的选项,它的单选按钮-点击-目标更正问题。
import requests
from bs4 import BeautifulSoup
addresses = ['https://www.ilmkidunya.com/online-test/5th-class-science-english-meduim-mcqs-with-answers?startfrom=0&last=92']
subjects = ['05th-Science-EM-']
for runscript in range(0, len(addresses)):
response = requests.get(addresses[runscript])
soup = BeautifulSoup(response.text, 'lxml')
ques_id = soup.find_all('div', class_='q-title')
ques_det = soup.find_all('div', class_='q-desc')
optn_det = soup.find_all('div', class_='choose-answer-block')
for i in range(0, len(ques_id)):
unformated_ques_id = (ques_id[i].text)
formated_ques_id = unformated_ques_id.replace("Question # ", subjects[runscript])
print(formated_ques_id)
#print('\n')
print(str(ques_det[i].text).strip())
#print('\n')
options = optn_det[i].find_all('label', class_='radio-button-click-target')
for opn in options:
print(str(opn.text).strip())
#print('\n')
print('<----->')电流结果
05-科学-EM-1
登革热雌性蚊子产卵:
在墙上
在土壤中
在木头上
在水中
<->
05-科学-EM-2
蛇就是这样的一个例子:
脊椎动物
虫类
虫类
蜗牛
<->
预期结果
05-科学-EM-1
登革热雌性蚊子产卵:
单选按钮-点击-目标:墙上
单选按钮点击目标:在土壤中
单选按钮-点击-目标:在木头上
单选按钮-点击-目标修正问题:在水中
<->
05-科学-EM-2
蛇就是这样的一个例子:
单选按钮-点击-目标校正问题:脊椎动物
单选按钮-点击-目标:蠕虫
单选按钮-点击-目标:昆虫
单选按钮-点击-目标:蜗牛
<->
发布于 2021-04-05 07:33:53
按以下方式更改选择器,并删除对已经字符串的str调用。此外,在适当的情况下,使用' class‘提取类,我使用join组合多值类:
import requests
from bs4 import BeautifulSoup
addresses = ['https://www.ilmkidunya.com/online-test/5th-class-science-english-meduim-mcqs-with-answers?startfrom=0&last=92']
subjects = ['05th-Science-EM-']
with requests.Session() as s:
for runscript in range(0, len(addresses)):
response = s.get(addresses[runscript])
soup = BeautifulSoup(response.text, 'lxml')
ques_id = soup.find_all('div', class_='q-title')
ques_det = soup.find_all('div', class_='q-desc')
optn_det = soup.find_all('div', class_='choose-answer-block')
for i in range(0, len(ques_id)):
unformated_ques_id = (ques_id[i].text)
formated_ques_id = unformated_ques_id.replace("Question # ", subjects[runscript])
print(formated_ques_id)
print(ques_det[i].text.strip())
options = optn_det[i].select('label.radio-button-click-target')
for opn in options:
print(' '.join(opn['class']), opn.text.strip())
print('<----->')发布于 2021-04-05 08:07:41
你应该再试一试。
for opn in options:
print(' '.join(opn['class']), end=' : ')
print(str(opn.text).strip())这将得到你想要的结果。
发布于 2021-04-05 07:48:25
实际上,您的代码包含多个错误:
soup对象!因为你可以拿起你的goal,然后解析它。.text.strip()这样的东西可以通过.text.strip()一次处理很多错误,但只需转到我的代码中,您就可以完全了解了。
from bs4 import BeautifulSoup
import requests
def main(url):
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
goal = soup.select_one('#divQuestion1')
title = goal.select_one('.q-desc').get_text(strip=True)
can = goal.select_one(
'label[class$=correctquestions]').get_text(strip=True)
wan = [x.get_text(strip=True)
for x in goal.select('label[class$=click-target]')]
print("Question: {}\nCorrect-Answer: {}\nWrong-Answers: {}".format(title, can, wan))
main('https://www.ilmkidunya.com/online-test/5th-class-science-english-meduim-mcqs-with-answers?startfrom=0&last=92')https://stackoverflow.com/questions/66949463
复制相似问题