Как включить только указанный класс, а не подклассы в Beautiful Soup?

#python-3.x #web-scraping #beautifulsoup

#python-3.x #очистка веб-страниц #beautifulsoup

Вопрос:

В списке «c», который я хочу, должно быть просто название коэффициентов, например c = [Стандартное отклонение, коэффициент Шарпа, коэффициент Трейнора]. С текущим кодом он принимает дополнительную информацию (вещи внутри ‘h3’). Любая помощь приветствуется. Спасибо.

 from bs4 import BeautifulSoup
import requests
import pandas as pd

headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
Gecko) Chrome/86.0.4240.198 Safari/537.36"}
    
url = https://www.moneycontrol.com/mutual-funds/nav/axis-bluechip-fund-growth/MAA009
response12 = requests.get(url, headers=headers).text
bs12 = BeautifulSoup(response12)
pos = bs12.find_all('h3', attrs = {'class' : 'list TAC'})
c = []
for div in pos:
  c.append(div.text.strip())
 

Ответ №1:

вы можете использовать contents

содержимое — это упорядоченный список объектов тегов и NavigableString, содержащихся в элементе страницы.

 for div in pos:
  c.append(div.contents[0])

print(c)
 

Результаты

 ['Standard Deviation', 'Beta', 'Sharpe Ratio', "Treynor's Ratio", "Jension's Alpha"]