Я делаю веб-скребок, который удаляет онлайн-роман с индексной веб-страницы, и код создает файл epub для каждой книги романа. Переводчик романа создал веб-страницы для романа в двух разных форматах.
Первый формат - это тег p
с тегом span
внутри. тег span
содержит связку css для каждого раздела абзаца, в зависимости от того, является ли он обычным текстом или инициализированным.
Другой формат - это текст в теге p
без тега span
и без кода CSS. Я был в состоянии использовать Beautifulsoup, чтобы получить часть кода, которая имеет только роман с веб-страницы. Я застрял, пытаясь сделать заявление if
, в котором говорится, что если внутри содержимого главы существует span
, запустите один код, иначе запустите другой код.
Я пытался использовать if chapter.find('span') != []:
и if chapter.find_all('span') != []:
из Beautifulsoup, но эти коды BeautifulSoup возвращают фактические значения, а не логические значения. Я проверил это, напечатав «да» или «нет», если в главе был тег, но выводом было бы либо «да», либо только «нет», когда я проверил 2 разные главы, чтобы убедиться, что они не имеют разных форматов .
Код, который я использую:
#get link for chapter 1 from index
r = requests.get(data[1]['link'])
soup = BeautifulSoup(r.content, 'html.parser')
# if webpage announcement change 0 to 1
chapter = soup.find_all('div', {"class" : "fr-view"})[0].find_all('p')
В зависимости от главы, вывод может быть:
#chapter equals this
[<p dir="ltr"><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap">Chapter 1 - title</span></p>,
<p dir="ltr"><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap">stuff</span></p>,
<p dir="ltr"><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap">italizes</span><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap"> stuff</span></p>]
или
#chapter equals this
[<p>Chapter 6 - title</p>,
<p>stuff</p>]
Я пытаюсь сделать и оператор if
, который может прочитать главу и сказать мне, если тег span
выходит, чтобы я мог выполнить правильный код.