2016-02-26 81 views
1

我想要取消BBC足球结果网站以获得球队,投篮,进球,纸牌和事件。在Python中抓取网页只检索一个条目

我在Python中编写脚本并使用Beautiful soup包。所提供的代码仅检索事件中表的第一个条目。当事件表打印到屏幕上时,全表将显示所有数据。

我从存储在事件刮见下表:

from bs4 import BeautifulSoup 
import urllib2 

url = 'http://www.bbc.co.uk/sport/football/result/partial/EFBO815155?teamview=false' 
inner_page = urllib2.urlopen(url).read() 
soupb = BeautifulSoup(inner_page, 'lxml')  

       for incidents in soupb.find_all('table', class_="incidents-table"): 
       print incidents.prettify() 
       home_inc_tag = incidents.find('td', class_='incident-player-home') 
       home_inc = home_inc_tag and ''.join(home_inc_tag.stripped_strings) 


       type_inc_tag = incidents.find('td', 'span', class_='incident-type goal') 
       type_inc = type_inc_tag and ''.join(type_inc_tag.stripped_strings) 

       time_inc_tag = incidents.find('td', class_='incident-time') 
       time_inc = time_inc_tag and ''.join(time_inc_tag.stripped_strings) 

       away_inc_tag = incidents.find('td', class_='incident-player-away') 
       away_inc = away_inc_tag and ''.join(away_inc_tag.stripped_strings) 

       print home_inc, time_inc, type_inc, away_inc 

我只专注一个一个比赛在那一刻得到这个正确的(EFBO815155)之前,我添加了一个正则表达式到URL,以获取所有比赛细节。

因此,incidents for循环没有获取所有数据,只是表中的第一个条目。

在此先感谢,我是新的堆栈溢出,如果有任何错误的这篇文章,格式等请让我知道。 谢谢!

+0

您能否将代码量减少到解释您的问题的最小量? [mcve] – GLaDOS

回答

1

首先,让事件表:

incidentsTable = soupb.find_all('table', class_='incidents-table')[0] 

然后遍历所有 'TR' 该表中的标签。

for incidents in incidentsTable.find_all('tr'): 
      # your code as it is 
      print incidents.prettify() 
      home_inc_tag = incidents.find('td', class_='incident-player-home') 
      home_inc = home_inc_tag and ''.join(home_inc_tag.stripped_strings) 
      . 
      . 
      . 

给出输出:

Bradford Park Avenue 1-2 Boston United 
None None 
2' Goal J.Rollins 
36' None C.Piergianni 
N.Turner 42' None 
50' Goal D.Southwell 
C.King 60' Goal 

这是接近你想要什么。希望这可以帮助!

+0

辉煌,感谢您的帮助 – paulg