我有这段代码,它可以抓取带有结果的表格,获胜者以红色字体突出显示,失败者只是文本。这是 link到我正在抓取的网站。
这是它的样子:
winner_2 = selector.xpath('.//table[1]/tr[3]/td[4]/font/text()').extract()[0]
loser_2 = selector.xpath('.//table[1]/tr[3]/td[4]/text()').extract()[0]
print (winner_2 + loser_2)
结果是这样的:
New Zealand v Australia
但有时没有赢家也没有输家(即平局),整个文本只是没有字体的文本。在那种情况下,它返回获胜者并返回 IndexError: list index out of range(因为带有字体的文本不存在),失败者是两个团队,这正是我需要的。
我怎样才能让它检查是否存在赢家,如果不存在赢家,则打印出输家?
请您参考如下方法:
在这种情况下,我会使用 extract_first():
winner_2 = selector.xpath('.//table[1]/tr[3]/td[4]/font/text()').extract_first()
loser_2 = selector.xpath('.//table[1]/tr[3]/td[4]/text()').extract_first()
if winner_2 and loser_2:
print(winner_2 + loser_2)
else:
print(loser_2)
这样我们就避免了IndexError。如果缺少任何数据,它将是 None,我想这是合乎逻辑的。
