#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.