如何从 <span class="className">TEXT I WANT</span> in Python 中获取文本

How to get text from inside a <span class="className">TEXT I WANT</span> in Python

如何根据下面的屏幕截图获取相当于 21,427 的标题文本。

我试过了,但没用:

rating_count = soup.find("span", attrs={'class':'rating_count'})
print rating_count

这是输出

您收到此错误是因为您输入的跨度 class 有误。如果您仔细查看您发布的图片,它表示跨度的 class 是 rating-count,而您输入的是 rating_count 变成 BeautifulSoup。因此,它查找 rating_count,没有找到,并且 returns NoneType.

rating_count = soup.find("span",{'class':'rating-count'}).text
print rating_count

这将完全满足您的需求。

from BeautifulSoup import BeautifulSoup

data='<span class="rating-count">TEXT I WANT</span>'
soup=BeautifulSoup(data)
t=soup.find('span',{'class':'rating-count'})
print t.text

已编辑:

根据您提供的代码。看起来由于没有定义 header,google 不会发送您要查找的信息。因此,BeautifulSoup 无法找到跨度,因为它实际上并不存在。试试这个,它对我有用:

pkg = "com.mavdev.focusoutfacebook"
url = "https://play.google.com/store/apps/details?id=" + pkg
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
data = opener.open(url).read()

soup=BeautifulSoup(data)

t=soup.find('span',{'class':'rating-count'})
print t.text

结果:

>>> 
1,397

您是否尝试从页面中的多个容器中获取内容?你能计算 span class: rating-count in the DOM 并查看是否有其他元素使用相同的 class 名称。可能是因为其他一些具有相同 class 名称的元素为 EMPTY。如果是这样,您可以执行 IF-ELSE 将 'null' 分配给您的属性。