Python 使用beautifulsoup打印表格第二列中的文本

Python 使用beautifulsoup打印表格第二列中的文本,python,python-2.7,web-scraping,beautifulsoup,Python,Python 2.7,Web Scraping,Beautifulsoup,我编写这段代码是为了从页面的表中检索文本。当我在第一列中使用它时,效果很好: from bs4 import BeautifulSoup import urllib2 #xbmc, xbmcgui, xbmcaddon url = 'http://racing4everyone.eu/formula-e-201516/' page = urllib2.urlopen(url) soup = BeautifulSoup(page.read(), 'html.parser') for row i

我编写这段代码是为了从页面的表中检索文本。当我在第一列中使用它时,效果很好:

from bs4 import BeautifulSoup
import urllib2 #xbmc, xbmcgui, xbmcaddon

url = 'http://racing4everyone.eu/formula-e-201516/'
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read(), 'html.parser')

for row in soup.findAll('table')[0].tbody.findAll('tr'):
    first_column = row.findAll('th')[0].text
    print first_column
但是,当我尝试从第二列提取相同的数据时:

for row in soup.findAll('table')[0].tbody.findAll('tr'):
    second_column = row.findAll('th')[1].text
    print second_column
我得到一个错误:

ePrix
Traceback (most recent call last):
  File "addon.py", line 9, in <module>
    second_column = row.findAll('th')[1].text
IndexError: list index out of range
ePrix
回溯(最近一次呼叫最后一次):
文件“addon.py”,第9行,在
第二列=row.findAll('th')[1]。文本
索引器:列表索引超出范围

我做错了什么?

这是因为除第一行之外的所有行都包含一个
th
元素:

<tr>
<th>1</th>
<td>...</td>
...
<td>24 October 2015</td>
</tr>
[1://code>这里跳过第一个标题行

印刷品:

Beijing ePrix
Putrajaya ePrix
Punta del Este ePrix
Buenos Aires ePrix
Mexico
Long Beach ePrix
Paris ePrix
Berlin ePrix
Moscow ePrix
London ePrix Race 1
London ePrix Race 2

这可能是一个愚蠢的问题,但如果我想从第二个专栏以外的其他专栏获取信息,该怎么办?那我该怎么办?@LucEvertzen当然可以,试一下索引:
print(row.find_-all('td')[1].text)
print(row.find_-all('td')[2].text)
等等。我试过了,得到了一个
列表索引超出范围的错误。编辑:弄明白了,我现在正试图将它应用到一个不同的系统上,它有不同的结构。我会回去的。@LucEvertzen是的,那是因为表中的合并单元格。最后一行没有3个tds-只有2个。我想你可以再问一个关于如何处理的问题。确保你提供了所有的细节。谢谢
Beijing ePrix
Putrajaya ePrix
Punta del Este ePrix
Buenos Aires ePrix
Mexico
Long Beach ePrix
Paris ePrix
Berlin ePrix
Moscow ePrix
London ePrix Race 1
London ePrix Race 2