我需要使用beautifulsoup python从类标签中检索数据而在内部标签中没有数据

时间:2019-02-12 08:09:02

标签: python web-scraping beautifulsoup

我需要使用 beautifulsoup python库从“ ikman.lk” 中检索数据。

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

我只需要使用Beautifulsoup库获得“显示131条广告中的1-25条”部分。 我尝试过,

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

但它说“'NoneType'对象没有属性'text'“。 谢谢

2 个答案:

答案 0 :(得分:1)

如果我正确回答了问题,则需要从子标签之前的标签中获取初始文本。标签的子项位于名为.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 

答案 1 :(得分:0)

您需要使用<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