Хорошо, так что я работаю над самостоятельным проектом для моего курса по программированию в колледже. Мой план состоит в том, чтобы очистить различные части веб-сайта лиги по наблюдению для статистики и c, сохранить их в БД, а затем вытащить из этого БД с помощью бот-диска. Однако у меня проблемы с самим сайтом. Вот скриншот html для таблицы результатов .
Как вы можете видеть, это довольно запутанно и трудно ориентироваться с повторяющимися тегами div и body, и я уверен, что он создается динамически. Мой профессор порекомендовал мне найти способ выделить звание ранга в верхней части таблицы, а затем получить доступ к родительской строке, а затем перебрать братьев и сестер, чтобы извлечь данные, такие как имя команды, положение и т. Д. c, в словарь на данный момент. , Я не смог найти в Интернете ничего, что могло бы мне помочь, большинство веб-сайтов не предоставляют достаточно информации или устарели.
Вот что у меня есть:
from bs4 import BeautifulSoup
import requests
import link
import re
import pprint
url = 'https://overwatchleague.com/en-us/standings'
response = requests.get(url).text
page = BeautifulSoup(response, features='html.parser')
# for stat in page.find(string=re.compile("rank")):
# statObject = {
# 'standing' : stat.find(string=re.compile, attrs={'class' : 'standings-table-v2styles__TableCellContent-sc-3q1or9-6 jxEkss'}).text.encode('utf-8')
# }
# print(page.find_all('span', re.compile("rank")))
# for tag in page.find_all(re.compile("rank")):
# print(tag.name)
print(page.find(string=re.compile('rank')))
"""
# locate branch with the rank header,
# move up to the parent branch
# iterate through all the siblings and
# save the data to objects
"""
Комментарии - все неудачные попытки и все ничего не возвращают. единственная не закомментированная строка возвращает массив json с большим количеством ненужной информации, которая включает в себя то, что я хочу проанализировать и использовать для моего проекта. Я связал его как Google Do c и выделил то, что я ищу, чтобы захватить.
Я не совсем уверен, как еще подойти к этому на данный момент. Я подумал об использовании селена, но мне не хватает javascript, поэтому я стараюсь избегать его, если это возможно. Даже если бы вы могли прокомментировать несколько советов о том, как еще подойти к этому, я был бы очень признателен.
Спасибо:)