Я использую BS4 для анализа этой веб-страницы : вы заметите, что на странице есть две отдельные таблицы.Вот соответствующий фрагмент моего кода, который успешно возвращает данные, которые мне нужны из первой таблицы, но не находит ничего из второй таблицы:
# import packages
import urllib3
import certifi
from bs4 import BeautifulSoup
import pandas as pd
#settings
http = urllib3.PoolManager(
cert_reqs='CERT_REQUIRED',
ca_certs=certifi.where())
gamelog_offense = []
#scrape the data and write the .csv files
url = "https://www.sports-reference.com/cfb/schools/florida/2018/gamelog/"
response = http.request('GET', url)
soup = BeautifulSoup(response.data, features="html.parser")
cnt = 0
for row in soup.findAll('tr'):
try:
col=row.findAll('td')
Pass_cmp = col[4].get_text()
Pass_att = col[5].get_text()
gamelog_offense.append([Pass_cmp, Pass_att])
cnt += 1
except:
pass
print("Finished writing with " + str(cnt) + " records")
Finished writing with 13 records
Я проверил данные из таблицы ВТОРОЙсодержится в супе (я вижу это!).После многих проблем я обнаружил, что вся вторая таблица полностью содержится в одном большом комментарии (почему?).Мне удалось извлечь этот комментарий в один объект комментария, используя приведенный ниже код, но я не могу понять, что с ним делать после этого, чтобы извлечь нужные мне данные.В идеале я хотел бы проанализировать комментарий таким же образом, как я успешно разбираю первую таблицу.Я попытался использовать идеи из аналогичных вопросов переполнения стека (селен, фантомы) ... не повезло.
import bs4
defense = soup.find(id="all_defense")
for item in defense.children:
if isinstance(item, bs4.element.Comment):
big_comment = item
print(big_comment)
<div class="table_outer_container">
<div class="overthrow table_container" id="div_defense">
...and so on....