Python BS4 получить элемент во всплывающем окне без селена - PullRequest
0 голосов
/ 12 мая 2018

Я хотел бы собрать данные для всплывающего окна на этой странице.https://www.commonsense.org/education/game/garrys-mod

Я пытаюсь собрать данные во всплывающем окне Предметы и навыки.Я знаю, что мог бы использовать селен, но я бы предпочел не использовать его, если он бесполезен.

Данные, которые я пытаюсь собрать, находятся там:

subjectSkills = gameSoup.find('div',class_='popper popper-popover subjects-skills')

Однако он возвращает None, так как находится за всплывающим окном, которое выглядит так:

<a href="#" id="subjects-skills" class="body-color" data-toggle="popover" data-content=".subjects-skills" data-arrow="false" target="_self">Subjects &amp; skills</a>

Когда нажата кнопка со стрелкой, значение data-arrow меняется на true, и это может быть решением, но я не уверен, как / если возможно изменить это значение.

Спасибо

1 Ответ

0 голосов
/ 12 мая 2018

Если вы ищете всплывающее окно с предметами, которые я использовал

res = soup.findAll("div", {"class": "subjects-skills__item"})

и возвращение было:

<div class="subjects-skills__item">
<h5 class="subjects-skills__label">Subjects</h5>
<ul>
<li>Science</li>
</ul>
</div>,
 <div class="subjects-skills__item">
<h5 class="subjects-skills__label">Skills</h5>
<ul>
<li>Creativity</li>
<li>Critical Thinking</li>
</ul>
</div>

Я получил его, щелкнув всплывающее окно. Выделите текст, затем щелкните правой кнопкой мыши и перейдите к проверке, чтобы найти класс.

from bs4 import BeautifulSoup as bs4
import requests

def get_data():

    url = 'https://www.commonsense.org/education/game/garrys-mod'
    r = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36"})
    html_bytes = r.text
    soup = bs4(html_bytes, 'lxml')

    res = soup.findAll("div", {"class": "subjects-skills__item"})

    return res

test1 = get_data()

Если вы просто хотите текст ..

# For just the Text
for i in test1:
    print(i.text)

возвращает

Subjects
Science

Skills
Creativity
Critical Thinking
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...