2016-03-04 3 views
0

У меня есть следующий раздел html, это часть страницы, на которой отображаются результаты футбольной игры.Использование BeautifulSoup для разбора некоторого HTML

<div class = "schedules-list-matchup"></div> 
<!-- <un inportant stuff --> 
<div class=list-matchup-row-team> 
    <span class="team-name away lost">team1</span> 
    <span class="team-logo away team-name">...</span> 
    <span class="team-score away lost">2</span> 
    <span class="team-score home">3</span> 
    <span class="team-logo home team-name">...</span> 
    <span class="team-name home">team2</span> 
</div> 
<div class=list-matchup-row-team> 
    <span class="team-name away lost">team3</span> 
    <span class="team-logo away team-name">...</span> 
    <span class="team-score away lost">2</span> 
    <span class="team-score home">3</span> 
    <span class="team-logo home team-name">...</span> 
    <span class="team-name home">team4</span> 
</div> 
<!-- <ramainder of code> --> 

Я пытаюсь читать его и создавать объекты класса:

class Game: 
def __init__(self, homeTeam, homeTeamScore, awayTeam, awayTeamScore): 
    self.homeTeam = homeTeam 
    self.homeTeamScore = homeTeamScore 
    self.awayTeam = awayTeam 
    self.awayTeamScore = awayTeamScore 

, что я думал, что я делал, было Перебор каждый <div class= "list-matchup-row-team>

мой код:

html = urlopen(baseUrl + '1') 
bsObj = BeautifulSoup(html, 'lxml') 
table = bsObj.find("ul",{"class":"schedules-table"}) 

for game in table.findAll("li", {"class":"schedules-list-matchup"}): 
    for g in game.findAll("div", {"class":"list-matchup-row-team"}): 
     for teams in g.findAll("span", {"class" : "home"}): 
      print(teams.find("span", {"class" : "team-name"})) 
      print(teams.find("span", {"class" : "team-score"})) 

    print('==========================') 

, который возвращает кучу нулевых объектов. Как я могу перебирать каждый элемент span внутри тега <div class= "list-matchup-row-team> и проверять, содержит ли класс «имя команды» и «командный счет»? для каждого дома и прочь?

+0

Почему вы не можете просто получить все элементы дома, а затем все элементы? –

+0

Я могу, но как только у меня есть все домашние элементы, как я могу их разделить, чтобы сохранить каждую часть данных в переменной? – StillLearningToCode

ответ

0

Я думаю, что вы можете просто подойти к классу имени команды напрямую.

попробуйте это.

table.findAll("span", {"class" : "team-name"}) 

затем забрать и домой.

+0

if i 'для игры в table.findAll ("li", {"class": "schedules-list-matchup"}): \t \t для g в game.findAll ("div", {"class": " список-матч-рядная команда "}): \t \t \t для teamNames в g.findAll (" пролет», { "класс": "команда-имя"}): \t \t \t \t печать (teamNames.find ("span", {"class": "home"})) ', то я все равно не получаю объект обратно. – StillLearningToCode

+0

Я имею в виду, что вам не нужны все другие материалы findAll. just table.findAll ("span", {"class": "team-name"}) в порядке поиска в html. –

Смежные вопросы