2015-11-01 58 views
0

想知道如果你可以帮助一些网络报废我试图做。美丽的汤变量跨班

下面是我想从中获取数据的span类。问题是跨度类中存在不同数据点的随机数。

我知道部分“价格-VAL”是所有迭代相同的,但我不能工作,如何获取数据时,搜索只是这一点。

<span class="price-val_196775436 odd-val ib right"> 
    2.47 
    </span> 

到目前为止我的代码

url ="http://www.sportsbet.com.au/betting/american-football" 
    r = requests.get(url) 
    soup = BeautifulSoup(r.content) 
    g_data = soup.find_all("div", {"class": "accordion-body"}) 



    for item in g_data: 
      A = item.find('span', {'class': 'team-name ib'}).text 
      B = item.find('span', {'class': 'price-val_196775436 odd-val ib right'}).text 

错误我得到

Traceback (most recent call last): 
    File "C:\Users\James\Desktop\NFLsportsbet.py", line 23, in <module> 
    B = item.find('span', {'class': 'price-val'}).text 
AttributeError: 'NoneType' object has no attribute 'text' 
+0

你有你的答案? – SIslam

+0

谢谢,这有助于堆@SIslam – Jimmyn

回答

2

使用解析库例如lxml,并可能需要使用正则表达式或氯氟

import requests,re 
from bs4 import BeautifulSoup 

url ="http://www.sportsbet.com.au/betting/american-football" 
r = requests.get(url) 
soup = BeautifulSoup(r.content,'lxml') 
g_data = soup.find_all("div", {"class": "accordion-body"}) 



for items in g_data: 
    print items.find('span', {'class': 'team-name ib'}).text 
    print items.find('span', {'class': lambda L: L and L.startswith('price-val_')}).text 
    #print items.find('span', {'class': re.compile('price-val_*')}).text #or regex like this 

它打印

Detroit Lions 

2.47 

Tampa Bay Buccaneers 

3.85 

Arizona Cardinals 

1.39 

San Diego Chargers 

2.65 

San Francisco 49ers 

3.95 

New York Giants 

2.40 

Cincinnati Bengals 

1.97 

Tennessee Titans 

2.61 

Minnesota Vikings 

1.90 

New York Jets 

1.66 

Seattle Seahawks 

1.46 

Green Bay Packers 

1.68 

Indianapolis Colts 

3.22