Веб-парсинг на странице ответов kahoot, на которой дети не появляются в классе - PullRequest
1 голос
/ 21 июня 2020

Недавно я начал изучать веб-парсинг в python, меня пытались создать веб-парсер, который находит ответы на kahoots. Для этого мне нужно получить доступ к коду внутри класса (или я считаю, что это класс, я еще не изучил html). Как мне получить доступ к части, которая говорит <div id="app">. Я пробовал использовать метод children в Beautiful soup, но это не дает никаких результатов. Мне нужен доступ к классам внутри этого, и мне интересно, как это сделать. Я прикрепил свой код ниже, который не может получить доступ к объектам в этом контейнере. Большое спасибо

Edit

Я пытаюсь найти ответы на каждый вопрос, чтобы я мог создать бота, который сам играет в kahoot, Спасибо за ответы,

from bs4 import BeautifulSoup
import requests
url = 'https://create.kahoot.it/details/disney/0a39590a-cc49-4222-bf28-dd9da230d6bf'
website = requests.get(url)
soup = BeautifulSoup(website.content, 'html.parser')
find_class = soup.find(id='app')
print(list(find_class.children))

1 Ответ

2 голосов
/ 21 июня 2020

Данные загружаются динамически JavaScript. Но вы можете использовать модуль requests для имитации:

import json
import requests


url = 'https://create.kahoot.it/details/disney/0a39590a-cc49-4222-bf28-dd9da230d6bf'

kahoot_id = url.split('/')[-1]
answers_url = 'https://create.kahoot.it/rest/kahoots/{kahoot_id}/card/?includeKahoot=true'.format(kahoot_id=kahoot_id)
data = requests.get(answers_url).json()

# uncomment this to see all data:
# print(json.dumps(data, indent=4))

for q in data['kahoot']['questions']:
    for choice in q['choices']:
        if choice['correct']:
            break
    print('Q: {:<70} A: {} '.format(q['question'].replace('&nbsp;', ' '), choice['answer'].replace('&nbsp;', ' ')))

Печать:

Q: What kind of animal is Goofy?                                          A: Dog 
Q: Who founded Disney?                                                    A: Walt Disney 
Q: Which country was it illegal to show Donald Duck?                      A: Finland 
Q: Why was it illegal in Finland?                                         A: He weren't wearing pants 
Q: Where does Mickey mouse live?                                          A: Mickey mouse clubhouse 
Q: Who is Mickey Mouse's girlfriend?                                      A: Minne Mouse 
Q: What is Minnie's favorite color?                                       A: Pink 
Q: Which year was Disney founded?                                         A: 1923 
Q: Who was the voices to Elsa and Anna in Frozen?                         A: Idina Menzel and Kristen Bell 
Q: What did Scrooge McDuck love to bath in?                               A: Coins 
Q: Who is Donald Duck's girlfriend?                                       A: Dolly Duck 
Q: Who are these guys?                                                    A: Huey, Dewey and Louie Duck 
Q: What did the Sleeping Beauty touch to fall asleep in a hundred years?  A: On a spindle 
Q: Why did Snow white's stepmother hate her?                              A: Shes pretty 
Q: What is the name of Jasmine's tiger?                                   A: Rajah 
Q: How many stepsisters did cinderella have?                              A: 2 
Q: Which hair color does Ariel have?                                      A: Red 
Q: What is the name of these two characters?                              A: Mowgli and Baloo 
...