BeautifulSoup4 - поиск определенных строк c h3 и их сохранение - PullRequest
2 голосов
/ 14 июля 2020

У меня есть набор html данных, которые выглядят следующим образом:

<div id="productplacementlist_1" class="c-channel-placement-content">

<h3 class="c-subheading-6">TITLE1 EXAMPLE</h3>

«div id» уникален для каждого класса, значение за «_» меняется на 2, 3, 4, et. c. Мне нужен контент (строка, текст) для каждого класса h3. Поэтому я использую:

start = soup.find("h3").string

Это отлично работает для меня, но только для первого элемента «h3» - когда я распечатываю его, я получаю содержимое, например, в этом случае:

Вывод: "TITLE 1 EXAMPLE"

У меня есть 191 «строка» из тегов h3, которые я хочу сохранить, каждая с одним значением. Итак, «start» - это моя отправная точка, оттуда я перехожу к следующему элементу с помощью:

s2 = start.find_next("h3").string

Это отлично работает, я получаю следующий элемент. Но я думаю, что это не лучший способ вручную создать новую «начальную точку» (например, s2 здесь) для 191 элемента.

Так что мне просто нужно al oop, начиная с «start», а затем перейти к s2, сохраните это (автоматически в фоновом режиме) как s3, затем перейдите к следующему элементу и так далее - l oop должен остановиться на последнем теге h3.

OR

Другой способ - получить все теги h3 за один поиск с помощью следующей команды:

search2 = soup.find_all("h3", {"class": "c-subheading-6"})

Вывод:

<h3 class="c-subheading-6>"TITLE 1 EXAMPLE</h3>
<h3 class="c-subheading-6>"TITLE 2 EXAMPLE</h3>

Это будет тоже все в порядке, но мне нужно найти способ сохранить строку (только текст) каждого класса h3 в одном значении, а не в списке.

1 Ответ

0 голосов
/ 14 июля 2020

РЕШЕНИЕ:

h3s = [h3.string for h3 in soup.find_all("h3", {"class": "c-subheading-6"})] – 

из codedawi

Большое спасибо, одна строка, и я пробую 10.000 разных вещей с 10+ строки кода. Большое вам спасибо!

@ wwii

Не напрямую, но это поможет в будущем ( Как мне создать переменное количество переменных? )

Комментарий: Вы спрашиваете, как можно назначить кучу разных строк переменной, не записывая var_name = mystring целую кучу раз? Особенно, если вы заранее не знаете, сколько их может быть? - Да, было бы здорово узнать об этом.

Спасибо тебе тоже !! Вы оба мне очень помогли :)

...