#python #html #beautifulsoup
#python #HTML #beautifulsoup
Вопрос:
Я перепробовал несколько решений, чтобы сделать это правильно, но не могу в этом разобраться
У меня есть следующий HTML:
<section id="content4" class="tab-content"&&t;
<p&&t;
<div class="Text_Title"&&t;Product 1</div&&t;
<div style="display: inline-block;"&&t;Red Ball<div&&t;</p&&t;
<p&&t;
<div class="Text_Title"&&t;Product 2</div&&t;
<div style="display: inline-block;"&&t;Green Ball</div&&t;</p&&t;
<p&&t;
<div class="Text_Title"&&t;Product 3</div&&t;
<div style="display: inline-block;"&&t;Yellow Ball</div&&t;</p&&t;
Я пытаюсь извлечь текст из DIV = Text_Title
и STYLE = display: inline-block;
результат, который я пытаюсь получить:
Product 1 - Red Ball
Product 2 - Green Ball
Product 3 - Yellow Ball
Ответ №1:
Используется findAll
для извлечения списка объектов тегов, соответствующих заданным критериям, затем zip
для параллельного выполнения итерации по итерируемому.
from bs4 import BeautifulSoup
input_ = """<section id="content4" class="tab-content"&&t;
<p&&t;
<div class="Text_Title"&&t;Product 1</div&&t;
<div style="display: inline-block;"&&t;Red Ball<div&&t;</p&&t;
<p&&t;
<div class="Text_Title"&&t;Product 2</div&&t;
<div style="display: inline-block;"&&t;Green Ball</div&&t;</p&&t;
<p&&t;
<div class="Text_Title"&&t;Product 3</div&&t;
<div style="display: inline-block;"&&t;Yellow Ball</div&&t;</p&&t;"""
soup = BeautifulSoup(input_, "html.parser")
for x, y in zip(soup.findAll("div", attrs={"class": "Text_Title"}),
soup.findAll("div", attrs={"style": "display: inline-block;"})):
print(x.text, "-", y.text)
Product 1 - Red Ball
Product 2 - Green Ball
Product 3 - Yellow Ball