如何从Python中的<span class =“className”> TEXT I WANT </span>中获取文本

时间:2015-12-13 00:19:59

标签: python web-scraping beautifulsoup urllib2

如何根据下面的屏幕截图,根据标题获取文本state

我尝试过这个并没有用:

21,427

enter image description here

这是输出

enter image description here

3 个答案:

答案 0 :(得分:4)

这将完全符合您的要求。

HydroElectric

EDITED:

根据您提供的代码。看起来因为没有定义标题,谷歌不会发送您正在寻找的信息。因此,BeautifulSoup无法找到跨度,因为它实际上并不存在。试试这个,它对我有用:

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

结果:

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 :(得分:2)

您收到此错误是因为您错误地输入了span类的内容。如果仔细查看您发布的图片,则表示该跨栏的类别为评分计数,而您已将 rating_count 键入BeautifulSoup。因此,它会查找 rating_count ,找不到它,然后返回NoneType

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

答案 2 :(得分:0)

您是否尝试从网页中的多个容器中获取内容?你能算一下span类:DOM中的rating-count,看看是否有其他元素使用相同的类名。这可能是因为具有相同类名的其他一些元素是EMPTY。如果是这样,您可以使用IF-ELSE将“null”分配给您的属性。