【问题标题】:Scrapy IndexError: list index out of rangeScrapy IndexError:列表索引超出范围
【发布时间】:2019-11-05 01:20:14
【问题描述】:

我正在尝试抓取游戏的结果,但是有一个游戏有第三轮,有一个游戏没有,所以在没有第三轮的游戏中会发生错误并且不要刮任何东西。

IndexError: list index out of range

部分代码:

player1_game1 = response.css('tbody tr:nth-child(1) td span::text').re('\d')[0]
player2_game1 = response.css('tbody tr:nth-child(2) td span::text').re('\d')[0]
player1_game2 = response.css('tbody tr:nth-child(1) td span::text').re('\d')[1]
player2_game2 = response.css('tbody tr:nth-child(2) td span::text').re('\d')[1]
player1_game3 = response.css('tbody tr:nth-child(1) td span::text').re('\d')[2]
player2_game3 = response.css('tbody tr:nth-child(2) td span::text').re('\d')[2]


items['player1_game1'] = player1_game1
items['player2_game1'] = player2_game1
items['player1_game2'] = player1_game2
items['player2_game2'] = player2_game2
items['player1_game3'] = player1_game3
items['player2_game3'] = player2_game3

如果我没有第三场比赛,我什么都不回答,留空,剩下的就刮了

错误:

IndexError: list index out of range

我怎样才能解决这个问题并产生正确的结果?

【问题讨论】:

    标签: python python-3.x web-scraping scrapy


    【解决方案1】:

    您可以使用try...except 块:

    player1_game1 = response.css('tbody tr:nth-child(1) td span::text').re('\d')[0]
    player2_game1 = response.css('tbody tr:nth-child(2) td span::text').re('\d')[0]
    player1_game2 = response.css('tbody tr:nth-child(1) td span::text').re('\d')[1]
    player2_game2 = response.css('tbody tr:nth-child(2) td span::text').re('\d')[1]
    try:
        player1_game3 = response.css('tbody tr:nth-child(1) td span::text').re('\d')[2]
        player2_game3 = response.css('tbody tr:nth-child(2) td span::text').re('\d')[2]
    except:
        player1_game3 = ""
        player2_game3 = ""
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-31
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多