So basically I'm trying to scrape a webpage with Python and I'm getting stucked at finding the number of childs of one element in a list using BeautifulSoup, the HTML of the list follows this:
<table id="MyTable">
<thead>
<tr>...</tr>
</thead>
<tfoot>
<tr>...</tr>
</tfoot>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
In my case I want to get the number of tr
inside tag tbody
, but since it has no id, I found no way to get it with soup and then do a findAll("tr")
. Pretty sure this should be easy but can't find a way, how should I do it?
CodePudding user response:
You could check the len()
of your resultSet
from selecting all <tr>
in the <tbody>
:
len(soup.select('#MyTable > tbody tr'))
Example
from bs4 import BeautifulSoup
html='''
<table id="MyTable">
<thead>
<tr>...</tr>
</thead>
<tfoot>
<tr>...</tr>
</tfoot>
<tbody>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</table>
'''
soup = BeautifulSoup(html)
len(soup.select('#MyTable > tbody tr'))
Output
7