Для школьного проекта я пытаюсь разобраться в содержании вопросов с несколькими вариантами ответов (для изучения французских SAT. снимок экрана с веб-страницей, которую я хочу удалить
Мой скребок работает. Однако на странице используются javascript, чтобы получить первые 5 вопросов, затем вам нужно ответить на каждый вопрос и нажать следующую кнопку, после чего у вас есть доступ к 5-10 вопросам.
В инспекторе Я сравнил два html do c (до и после нажатия кнопки RadioButtons + Next), я поместил оба файла в конце поста (первый html do c имеет вид type = "get", в то время как второй имеет форму типа "post")
Таким образом, я использовал gem Mechanize и попытался нажать на все входы, а затем на кнопку. К сожалению, это не работает, и мне кажется, иметь один и тот же файл html до и после запуска моего кода с использованием Mechanize.
require 'open-uri'
require 'nokogiri'
require 'json'
require 'mechanize'
url = 'https://www.letudiant.fr/quiz/bac/histoire-geographie/quiz-bac-histoire-geographie-l-es-s-l-asie-du-sud-et-de-l-est-les-enjeux-de-la-croissance/question.html'
agent = Mechanize.new
page = agent.get(url)
form = agent.page.form_with(:class => "c-form")
form.radiobuttons.each do |button|
button.check
end
# check if button.checked?
puts "============"
form.radiobuttons.each do |button|
puts button.checked?
end
puts "============"
puts "************"
page = agent.submit(form)
puts page.parser.text
puts "************"
Это возвращает это в консоли: это означает, что Mechanize нажимал на каждую радиокнопку (каждый вопрос имеет 3 радиокнопки, таким образом, Mechan ize нажимает на все из них, но только последний оставался нажатым (для каждого вопроса), объясняя повторение ложного - ложного - истинного для каждого вопроса) как здесь
============
false
false
true
false
false
true
false
false
true
false
false
true
false
false
true
============
************
#<Mechanize::Page:0x00007fb942c50e38>
Test Quiz Bac L/ES/S - Histoire-Géographie - L'Asie du Sud et de l'Est - L'Etudiant
Quiz Bac Quiz Bac L/ES/S - Histoire-Géographie - L'Asie du Sud et de l'Est Étape 1 Étape 2 1) Mumbai est : Veuillez sélectionner une réponse. a) la capitale politique de l’Union indienne. b) la capitale économique et culturelle de l’Union indienne. c) la capitale culturelle de l’Union indienne. 2) Que sont les slums ? Veuillez sélectionner une réponse. a) Le nom des bidonvilles en Inde. b) Le nom des quartiers aisés en Inde. c) Le nom des décharges en Inde. 3) Comment évolue la population de l’agglomération de Mumbai ? Veuillez sélectionner une réponse. a) Une croissance lente. b) Une stagnation. c) Une croissance rapide. 4) Quelle est la part de la population de l’Asie du Sud et de l’Est dans la population mondiale ? Veuillez sélectionner une réponse. a) 2/3. b) 1/4. c) 1/2. 5) Que signifie « PMA » ? Veuillez sélectionner une réponse. a) Pays mal avancés. b) Pays les moins avancés. c) Pays mal adaptés.
##################
Attention ! Veuillez répondre à toutes les questions.
#######################
Étape suivante Articles les plus lus Bac S 2018 : tous les sujets et corrigés Grand oral du nouveau bac : ce qui vous attend On connaît la liste des œuvres au programme du bac de français 2020 Pourquoi prendre latin ou grec en option en terminale ? Complémentaires ou expertes, à quoi ressembleront les options maths en terminale ? Bac STMG 2018 : tous les sujets et corrigés Nouveau bac : vous aurez les résultats des E3C le 15 mars Que se passera-t-il si vous ratez votre bac en 2020 ? Bac 2019 : les citations à (bien) utiliser à l’épreuve de philo E3C : ce que vous risquez si vous les manquez window._taboola = window._taboola || []; _taboola.push({ mode: 'thumbnails-right-rail', container: 'taboola-right-rail-thumbnails', placement: 'Right Rail Thumbnails', target_type: 'mix' });
Quiz Bac L/ES/S - Histoire-Géographie - L'Asie du Sud et de l'Est
************
Предложение "Внимание! Veuillez répondre à toutes les questions. «Между ###### в консоли означает, что Mechanize пытался отправить форму, но не нажимал на каждую радиокнопку Как здесь, когда я пытаюсь кликать, не нажимая на радиокнопки
Вот код (найден в инспекторе) перед нажатием на каждую радиокнопку и нажатием следующей кнопки:
<form class="c-form has-error" method="post" data-frm="quiz" data-frm-legacy-final-step-action="/test/quiz/validation.html?time=1583184886" data-frm-init="1">
<div data-sln-scrollnav="" data-eng-scrollable="" class="c-scrollnav has-more-on-right">
<nav class="c-simple-nav c-scrollnav__scroller" data-sln-scroller="">
<ul class=" c-simple-nav__list c-simple-nav__list--progress " data-sln-inner="">
<li class="c-simple-nav__item"> <a class=" c-simple-nav__link is-active is-clickable " href="#" data-frm-legacy-multi-step="Etape 1"> Étape 1 </a> </li>
<li class="c-simple-nav__item"> <a class=" c-simple-nav__link " href="#" data-frm-legacy-multi-step="Etape 2"> Étape 2 </a> </li>
</ul>
</nav>
</div>
<ol class="c-quiz__question-list">
<li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 1) Mumbai est : </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21887" value="66881"> <span class="c-radio-label__label"> a) la capitale politique de l’Union indienne. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21887" value="66883"> <span class="c-radio-label__label"> b) la capitale économique et culturelle de l’Union indienne. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21887" value="66885"> <span class="c-radio-label__label"> c) la capitale culturelle de l’Union indienne. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 2) Que sont les slums ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21889" value="66887"> <span class="c-radio-label__label"> a) Le nom des bidonvilles en Inde. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21889" value="66889"> <span class="c-radio-label__label"> b) Le nom des quartiers aisés en Inde. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21889" value="66891"> <span class="c-radio-label__label"> c) Le nom des décharges en Inde. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 3) Comment évolue la population de l’agglomération de Mumbai ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21891" value="66893"> <span class="c-radio-label__label"> a) Une croissance lente. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21891" value="66895"> <span class="c-radio-label__label"> b) Une stagnation. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21891" value="66897"> <span class="c-radio-label__label"> c) Une croissance rapide. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 4) Quelle est la part de la population de l’Asie du Sud et de l’Est dans la population mondiale ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21893" value="66899"> <span class="c-radio-label__label"> a) 2/3. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21893" value="66901"> <span class="c-radio-label__label"> b) 1/4. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21893" value="66903"> <span class="c-radio-label__label"> c) 1/2. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 5) Que signifie « PMA » ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21895" value="66905"> <span class="c-radio-label__label"> a) Pays mal avancés. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21895" value="66907"> <span class="c-radio-label__label"> b) Pays les moins avancés. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21895" value="66909"> <span class="c-radio-label__label"> c) Pays mal adaptés. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
</ol>
<div class="c-form__errors">
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Attention ! Veuillez répondre à toutes les questions.
</div>
</div>
</div>
<input type="hidden" data-frm-legacy-multi-step-input="" name="step"> <input type="hidden" name="previousStep" value=""> <input type="hidden" name="nextStep" value="2"> <input type="hidden" name="idOrigine" value="1"> <input type="hidden" name="legacyFinalStepAction" value="/quiz/bac/histoire-geographie/quiz-bac-histoire-geographie-l-es-s-l-asie-du-sud-et-de-l-est-les-enjeux-de-la-croissance/conclusion.html?time=1583184886" ?="">
<div class="c-quiz__actions">
<button class="c-button c-button--medium c-button--rounded c-button--light-border u-themed is-active u-typo--upper" type="button" data-frm-legacy-multi-step="next">
<span>Étape suivante</span>
<svg class="c-icon-svg">
<use xlink:href="/svg/etu.sprite.svg#icon-chevron-right"></use>
</svg>
</button>
</div>
</form>
Вот код html, который я хочу получить (найдено в инспекторе после нажатия на каждую радиокнопку и нажатия на следующую кнопку:
<form class="c-form" method="post" data-frm="quiz" data-frm-legacy-final-step-action="/test/quiz/validation.html?time=1583187387" data-frm-init="1">
<div data-sln-scrollnav="" data-eng-scrollable="" class="c-scrollnav has-more-on-right">
<nav class="c-simple-nav c-scrollnav__scroller" data-sln-scroller="">
<ul class=" c-simple-nav__list c-simple-nav__list--progress " data-sln-inner="">
<li class="c-simple-nav__item"> <a class=" c-simple-nav__link is-clickable " href="#" data-frm-legacy-multi-step="Etape 1"> Étape 1 </a> </li>
<li class="c-simple-nav__item"> <a class=" c-simple-nav__link is-active is-clickable " href="#" data-frm-legacy-multi-step="Etape 2"> Étape 2 </a> </li>
</ul>
</nav>
</div>
<ol class="c-quiz__question-list">
<li class="c-quiz-question" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 6) Parmi ces trois États, quel est celui dont la population croît la plus vite ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21897" value="66911"> <span class="c-radio-label__label"> a) L’Inde. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21897" value="66913"> <span class="c-radio-label__label"> b) Le Japon. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21897" value="66915"> <span class="c-radio-label__label"> c) La Chine. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 7) Lequel de ces États est une démocratie ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21899" value="66917"> <span class="c-radio-label__label"> a) La Chine. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21899" value="66919"> <span class="c-radio-label__label"> b) L’Inde. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21899" value="66921"> <span class="c-radio-label__label"> c) La Corée du Nord. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 8) Les relations économiques entre la Chine et le Japon se caractérisent par : </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21901" value="66923"> <span class="c-radio-label__label"> a) des conflits. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21901" value="66925"> <span class="c-radio-label__label"> b) de la concurrence. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21901" value="66927"> <span class="c-radio-label__label"> c) de la complémentarité. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 9) À quelle instance la Chine refuse-t-elle la candidature du Japon ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21903" value="66929"> <span class="c-radio-label__label"> a) L’ONU. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21903" value="66931"> <span class="c-radio-label__label"> b) L’OMC. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21903" value="66933"> <span class="c-radio-label__label"> c) Le Conseil de sécurité de l’ONU. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
<li class="c-quiz-question" data-frm-validate="[ 'required' ]">
<h5 class="c-quiz-question__title"> 10) Quel État est chargé d’assurer la protection militaire du Japon ? </h5>
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Veuillez sélectionner une réponse.
</div>
</div>
<div class="c-quiz-question__options">
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21905" value="66935"> <span class="c-radio-label__label"> a) Le Royaume-Uni. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21905" value="66937"> <span class="c-radio-label__label"> b) Les États-Unis. </span>
<div class="c-radio__indicator"></div>
</label>
<label class=" c-radio-label u-themed ">
<input type="radio" name="question_21905" value="66939"> <span class="c-radio-label__label"> c) La Chine. </span>
<div class="c-radio__indicator"></div>
</label>
</div>
</li>
</ol>
<div class="c-form__errors">
<div class="c-block-error">
<div class="c-block-error__title">
<div class="c-block-bubble c-block-bubble--error">
<svg class="c-icon-svg" aria-hidden="true">
<use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
</svg>
</div>
Attention ! Veuillez répondre à toutes les questions.
</div>
</div>
</div>
Редактировать: я добавил код и детали, чтобы быть более точным, я надеюсь, что мою проблему легче понять .