Попытка назначить вывод BeautifulSoup переменной, чтобы получить из нее текст

#python #beautifulsoup

Вопрос:

Я пытаюсь передать результаты из функции find_all в другую функцию find_all, а затем извлечь текст из этого набора результатов, чтобы я мог ввести его либо во фрейм данных, либо в текстовый файл. У меня все время болит голова, потому что я могу сделать большую часть работы, но мне не хватает последнего кусочка головоломки.

Вот HTML — код, из которого я пытаюсь извлечь текст:

 lt;div class="card-headers"gt;lt;a href="/reviews/market/data-preparation-tools/vendor/microsoft/product/microsoft-power-bi" class="card-top-header " data-interaction="Select Vendor" data-catchpoint-elem="card-title" data-vendor-name="Microsoft - Product name"gt;Microsoft Power BIlt;/agt;lt;div class="card-sub-header"gt;by Microsoftlt;/divgt;lt;/divgt;  

Вот код, который у меня есть, который работает, но не позволяет мне извлечь название продукта: Microsoft Power BI.

 pList = rec_list.find_all(class_="card-headers") resultA = [] for pl in pList: resultA.extend(pl.find_all(class_="card-top-header"))  

Если я буду прост с этим кодом:

 program = rec_list.find_all(class_="card-top-header")  

Я получаю все дубликаты, потому что класс повторяется в двух отдельных дивах с разными классами.

Я, вероятно, упускаю из виду очевидное. Заранее благодарю вас за любую помощь!!

Ответ №1:

Это то, чего ты пытаешься достичь? product_names = [a.text for a in rec_list.select("div.card-headers gt; a")]

Комментарии:

1. Это вернуло мне больше, чем мне было нужно.

2. 'Company Size', 'Industry', 'Region', "Customers' Choice 2020", '', 'Microsoft Power BI', '645 Ratings', '', 'Microsoft Power BI', 'Read reviewsr', 'Microsoft vs Tableau', 'Microsoft vs Qlik', 'Microsoft vs IBM', 'See All Alternativesr', "Customers' Choice 2020",

3. Отредактированный. Если будет предоставлен больший образец html-кода, его будет легче решить