0
我想解析一个ESPN网页,以获得日期,时间和团队在使用BeautifulSoup给定一周的每个NFL游戏中玩。我能够获得大部分信息,但是,我在时间信息方面遇到了问题。BeautifulSoup文本<a></a>不退回
出于某种原因,标签之间的文本没有被返回。
为一个HTML中的一个标签是:
<a data-dateformat="time1" name="&lpos=nfl:schedule:time" href="/nfl/game?gameId=400874572">12:00 PM</a>
我期待得到“12:00 PM”中的一个标记之间,而是我得到:
<a data-dateformat="time1" href="/nfl/game?gameId=400874572" name="&lpos=nfl:schedule:time"></a>
它在标签之间没有任何文字。
这是我用来解析网页的东西。
import urllib2
from bs4 import BeautifulSoup
def parse_nfl_schedule_espn():
schedule = BeautifulSoup(urllib2.urlopen("http://www.espn.com/nfl/schedule/_/week/10").read(), "lxml")
for date in schedule.find_all('h2'):
#separate by game
game_info = date.nextSibling.find_all('tr')
date = str(date).split(">")
date = date[1].split("<")
date = date[0]
#print date
for i in range(len(game_info)):
#separate each part of game row
value = game_info[i].find_all('td')
#iterate over <thead>
if len(value) > 1:
#away team abv
away = str(value[0].find('abbr')).split(">")
away = away[1].split("<")
away = away[0]
#home team abv
home = str(value[1].find('abbr')).split(">")
home = home[1].split("<")
home = home[0]
time = value[2].find_all('a')
print time
#print "%s at %s" % (away, home)
if __name__ == "__main__":
parse_nfl_schedule_espn()
任何帮助/建议将不胜感激。
那个时间是由JavaScript探测生成的。你不能用BS刮它,你将不得不使用硒 – e4c5
将节点转换为字符串并在'<上分割>是什么?这就损害了使用BeautifulSoup的全部要点,它是以节点树的形式访问数据。 – spectras
页面[那个](http://www.espn.com/nfl/schedule)?隐藏公共页面的网址没有任何意义,并且使它更难以帮助您。 – spectras