Я пытаюсь очистить сайт https://www.livechart.me/winter-2019/tv, чтобы получить количество эпизодов, которые в настоящее время транслировались для определенных шоу в этом сезоне.Я делаю это, извлекая данные тега «episode-countdown», который дает что-то вроде «EP11:», затем метку времени после него, а затем я разрезаю эту строку, чтобы получить только число (в данном случае «11»), а затем вычитаюна 1, чтобы узнать, сколько эпизодов в данный момент вышло в эфир (поскольку отметка времени показывает, когда EP11 выйдет в эфир).
У меня есть список разных шоу, которые я смотрю в этом сезоне, чтобы отфильтровать то, что я извлекаю.строки отсчета эпизодов вместо того, чтобы извлекать отсчет для каждого показа показа.Большая проблема, с которой я сталкиваюсь, заключается в том, что строки «отсчета эпизодов» находятся не в том порядке, в котором я смотрю список своих шоу.Например, если мой список [show1, show2, show3, show4], я мог бы получить строковый тег «episodes-countdown» в порядке show3, show4, show1, show2, если они перечислены в этом порядке на веб-сайте.
Мой текущий код выглядит следующим образом:
from bs4 import BeautifulSoup
from urllib.request import Request, urlopen
def countdown():
html = Request('https://www.livechart.me/winter-2019/tv', headers={'User-Agent': 'Mozilla/5.0'})
page = urlopen(html)
soup = BeautifulSoup(page, 'html.parser')
shows = ['Jojo no Kimyou na Bouken: Ougon no Kaze', 'Dororo', 'Mob Psycho 100 II', 'Yakusoku no Neverland']
for tag in soup.find_all('article', attrs={'class': 'anime'}):
if any(x in tag['data-romaji'] for x in shows):
rlist = tag.find('div', attrs={'class': 'episode-countdown'}).text
r2 = rlist[:rlist.index(":")][2:]
print('{} has aired {} episodes so far'.format(tag['data-romaji'], int(r2)-1))
Каждое шоу, указанное на веб-сайте, находится внутри тега "article", поэтому для каждого шоу в операторе soup.find_all (), если«data-romaji» (название шоу, указанного на веб-сайте) соответствует шоу в моем списке «шоу», затем я извлекаю строку «episode-countdown», а затем нарезаю строку до числа, как описано выше, изатем распечатайте, чтобы убедиться, что я сделал это правильно.
Если вы заходите на веб-сайт, в списке перечислены шоу «Yakusoku no Neverland», «Mob Psycho», «Dororo» и «Jojo»в таком порядке вы получаете строки отсчета эпизодов, если запускаете код.То, что я хочу сделать, это сделать это в порядке моего списка «шоу», чтобы у меня был список передач и список выпусков, которые соответствуют друг другу.Я хочу добавить эфирный список эпизодов в виде столбца в фрейме данных pandas, который я сейчас создаю, поэтому его несоответствие столбцу "показывает" будет проблемой.
Есть ли способ извлечь для меня "Строка episode-countdown ", основанная на порядке моего списка" показов "вместо порядка, используемого на веб-сайте (если это имеет смысл)?