2015-10-24 89 views
1

这是我的第一个BS编码实验。
网站我刮是here
我遇到的问题是这段代码:<span>之前的文本标记

<div class="cmg_team_name"> 
      ARST 
      <span>101</span> 
</div> 

这里是我的代码:

import numpy as np 
from bs4 import BeautifulSoup 
import urllib2 

url = "http://covers.com/Sports/NCAAF/Matchups?selectedDate=2015-10-13" 
page = urllib2.urlopen(url) 
soup = BeautifulSoup(page.read(), 'html.parser') 
universities = soup.find_all('div',{'class':'cmg_team_name'}) 

#for university in universities: 
# print university.contents 
# print "****************" 
print universities[0] 

我的问题是我怎么只能访问span标志之前的文本。在这个例子中,我只想要ARST。 我试过print universities[0].get_text(),print universities[0].string得到None,也是数组符号。我知道我将如何在C++中做到这一点,但我假设python/BSoup会在一行中做到这一点...感谢!

+0

请不要更新您的代码以包含解决方案,因为它会使答案无效。 – ChrisF

回答

0

您必须首先从div中删除span,然后再清除空格和回车符等额外字符。

for university in universities: 
    span = [span.extract() for span in university('span')] 
    univ = university.text.replace(' ','').replace('\r','').replace('\n','') 
    print univ 
+0

这消除了跨度,谢谢。出于某种原因,'replace'语句不会删除空格。我将使用C++来查看ascii值以了解发生了什么。 – TriHard8

+0

我测试了系统中的代码。它运作良好。你可以告诉我你使用替换语句后得到的输出。 – blackmamba

+0

我添加了一些示例输出到问题陈述。奇怪的是.strip()无法清理空白区域。 – TriHard8

相关问题