Python:Beautifulsoup - 解析表格

时间:2014-08-29 00:36:05

标签: python beautifulsoup

我试图逐行遍历表并打印某些td' s。我可以单独打印每个,但我不确定如何打印同时在同一行的两个td。我想知道的是我在哪里放置for循环和print标签以使其工作。

<div id="main">
    <table>
        <tbody>
            <tr>
                <td><span class="bold">answer</span> </td>
                <td></td>
                <td>
                    <option value="1|0|%" selected="selected">%</option>
                    <option value="100|0|fraction">fraction</option>
                    <option value="100|0|ratio">ratio</option>
                </td>
            </tr>
        </tbody>
    </table>
</div>

我实现这一目标的尝试是

def summary(url, i):
html = wget(url)
soup = BeautifulSoup(html)
    for row in soup.findAll('div', {'id': 'main'}):
        for ops in row.findAll('tr'):
            for tds1 in ops.findAll('td'):
                for opt in tds1.findAll('option', {'selected': 'selected'}):
                    return opt
        for ops in row.findAll('tr'):
            for tds1 in ops.findAll('td'):
                for spans in tds1.findAll('span', {'class': 'bold'}):
                    return spans
            print (i, opt, spans)

1 个答案:

答案 0 :(得分:0)

想想你想用英语做什么,然后找出如何将它翻译成Python。

您希望逐行,然后打印同一行中的行中的两列。您已经获得了大部分代码:

# Go row by row
for ops in row.findAll('tr'):
    # Go column by column
    for tds1 in ops.findAll('td'):
        # Print columns on the same line
        print(tds1, end=' ')
    # Make sure to end each line after the last column
    print()

我不知道你的所有其他代码是什么 - 为什么你要做两次外循环,为什么你要在列中搜索其他内容,为什么你&#39 ;一旦找到第一个值等,就会立即返回 - 但是print end = ' '与{{1}}相关的部分是您丢失的部分:这就是您打印多个内容的方式同一条线。