мне нужно получить данные из тега класса без данных во внутренних тегах, используя Python Beautifulsoup - PullRequest
0 голосов
/ 12 февраля 2019

мне нужно получить данные из "ikman.lk" с использованием beautifulsoup библиотеки Python.

 <span class="t-small summary-count">  Showing 1-25 of 131 ads for <span>"Samsung Galaxy A5"</span>.</span>

Мне нужно получить только "Показ 1-25 из 131 объявления "часть с использованием библиотеки Beautifulsoup.Я попытался,

    pgn = soup1.find("span", {"class": "t-small summary-count"}).text
    print(pgn)

, но он говорит, что "объект 'NoneType' не имеет атрибута 'text'".Спасибо

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Если я правильно понял вопрос, вам нужно получить исходный текст из тега непосредственно перед дочерним тегом.Дочерние элементы тега доступны в списке под названием .contents .

. Вы можете использовать .contents[0]

from bs4 import BeautifulSoup
html="""
<span class="t-small summary-count">  Showing 1-25 of 131 ads for <span>"Samsung Galaxy A5"</span>.</span>
"""
soup=BeautifulSoup(html,'html.parser')
pgn = soup.find("span", {"class": "t-small summary-count"})
print(pgn.contents)
print(pgn.contents[0])

Выход

['  Showing 1-25 of 131 ads for ', <span>"Samsung Galaxy A5"</span>, '.']
  Showing 1-25 of 131 ads for 
0 голосов
/ 12 февраля 2019

Вам нужно найти <span> .... </span> с помощью select, а затем получить текст перед этим с помощью previousSibling Весь код:

from bs4 import BeautifulSoup
html = ''' <span class="t-small summary-count">  Showing 1-25 of 131 ads for 
<span>"Samsung Galaxy A5"</span>.</span>
'''
soup = BeautifulSoup(html, 'lxml')
get_span = soup.find('span' , attrs={'class' : 't-small summary-count'})



for a in get_span.select('span'):
    print a.previousSibling
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...