Доступ к тегам в комментариях HTML - PullRequest
0 голосов
/ 11 декабря 2018

Я знакомился с веб-копированием с Python через BS4.Мне не удалось найти решение для тегов DOM, которые встроены в комментарии.Например, при попытке получить данные со страницы .html (https://www.basketball -reference.com / team / GSW / 2018 / lineups / ) проверка таблицы на странице показывает:

<div class='table_outer_container"> ... </div>

Который я обычно мог бы получить, используя BeautifulSoup.Однако, когда я просматриваю реальный источник страницы, указанная таблица заключена в теги комментариев:

<!--

<div class='table_outer_container"> ... </div>

-->

Мне не удалось найти способ доступа к ней через BS4.Есть ли способ обойти это?

Спасибо.

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете удалить теги комментариев перед подачей html в bs4.

Убедитесь, что у нас есть правильные строки для функции замены

import requests
page = requests.get("https://www.basketball-reference.com/teams/GSW/2018/lineups/")
print(page.text.count("""<!--\n   <div class="table_outer_container">"""),page.text.count("""</div>\n-->"""))
# out: 8 8

Заменить строки

no_open_tag = page.text.replace("""<!--\n   <div class="table_outer_container">""","""<div class="table_outer_container">""")
no_close_tag = no_open_tag.replace("""</div>\n-->""","</div>")
print(no_close_tag.count("""<!--\n   <div class="table_outer_container">"""),no_close_tag.count("""</div>\n-->"""))
# out: 0 0

Подача в bs4

from bs4 import BeautifulSoup
soup = BeautifulSoup(no_close_tag, "html5lib")
print(len(soup.findAll("div", {"class":"table_outer_container"})))
# out: 8

Теперь мы можем проанализировать все 8 прокомментированных делений.

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