Не удается найти имя формы с помощью python-mechanize

#python #html #web-scraping #mechanize-python

#python #HTML #веб-очистка #механизировать-python

Вопрос:

Я только начал играть с python. Недавно я наткнулся на очистку веб-страниц и подумал, что сделать Кахут будет не так уж сложно (https://kahoot.it /) бот. Вы можете знать, а можете и не знать, о чем я говорю. Сейчас это не важно. Что мне нужно, так это создать программу, которая бы заполняла идентификатор игры, а затем псевдоним, но когда я пытаюсь запустить программу, я получаю сообщение об ошибке.

механизировать._mechanize.Ошибка FormNotFoundError: нет формы, соответствующей имени ‘GameID’

 import re
import config

from mechanize import Browser

br = Browser()

br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Firefox')]

br.open ("https://kahoot.it/")
br.select_form('gameId')
br.form['game-pin-input'] = '6105440'
 

Это и есть форма.

 <form action="#">
<input name="gameId" type="tel" placeholder="Game PIN" id="game-input" data-functional-selector="game-pin-input" class="sc-dlfnbm lflLbn" autocomplete="off" value="" aria-expanded="false">
<button type="submit" value="Submit" class="enter-button__EnterButton-sc-1o9b9va-0 kfzgPK" data-functional-selector="join-game-pin">Enter</button>
</form>
 

Я даже пытался найти имя формы с помощью скрипта, но не получил возврата.

 import os, subprocess
import re
import mechanize
from bs4 import BeautifulSoup

br = mechanize.Browser()

br.set_handle_robots(False) 
br.addheaders = [('User-agent', 'Firefox')]

br.open ("https://kahoot.it/")
for form in br.forms():
    print (form.name)
 

Пожалуйста, имейте в виду, что я впервые имею дело с html, и у меня нет никакого опыта.
Спасибо.

Комментарии:

1. gameId это имя элемента ввода внутри формы, а не самой формы. Насколько я вижу, у этой формы вообще нет имени.

2. Как бы я тогда ввел переменную в форму?

3. Когда я запускаю ваш второй пример кода, br.forms() возвращает пустой список. mechanize считает, что на странице вообще нет форм, вероятно, потому, что они создаются динамически с помощью javascript, который mechanize не поддерживает.

4. Вам нужно будет использовать что-то, что действует как настоящий браузер, например, Selenium.