使用beautifulsoup在BeautifuSoup中获得第二个和第三个孩子

时间:2016-08-24 01:21:08

标签: python beautifulsoup

我有一张类似于下面的表格:

<table>
    <thead>
        <tr>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
        <tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>

我需要每行的第二和第三行。我在Python 3.5中使用BeautifulSoup

现在,我正在做:

Table = Soup.find('table', attrs={'id': 'field'})
        Tbody = Table.find('tbody')
        Records = Tbody.find_all('tr')
        Record = Records.find_all('td')
        for field in Records:
            print (Record[2].text)

我收到错误:

Traceback (most recent call last):
  File "C:/Users/arcee/PycharmProjects/scraper/main.py", line 33, in <module>
    Record = Records.find_all('td')
AttributeError: 'ResultSet' object has no attribute 'find_all'

是否有更简单的方法来获取第二个和第三个TD元素?

由于

1 个答案:

答案 0 :(得分:0)

你因为这些问题而得到了这个错误:

Records = Tbody.find_all('tr')
Record = Records.find_all('td')

find_all会返回listResultSet)次搜索标记的出现次数。 ResultSet没有find_all属性 - 但是每个成员都有Records = Tbody.find_all('tr') for record in records: print(record.find_all('td')) 属性。所以,做..

{"Key":"value1"},{"Key":"value2", "id":"id"}

将使您的代码运行。