如何在BeautifulSoup(Python)中从表中获取第一个子表行
这是代码和示例结果,我只希望表的第一列忽略其余列。在Stackoverflow上也有类似的问题,但它们没有帮助如何在BeautifulSoup(Python)中从表中获取第一个子表行,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,这是代码和示例结果,我只希望表的第一列忽略其余列。在Stackoverflow上也有类似的问题,但它们没有帮助 <tr> <td>JOHNSON</td> <td> 2,014,470 </td> <td>0.81</td> <td>2</td> </tr> 我得到的是: SMITH 2,501,922 1.0061 JOHNSON 2,014,470 0.812 您可以使
<tr>
<td>JOHNSON</td>
<td> 2,014,470 </td>
<td>0.81</td>
<td>2</td>
</tr>
我得到的是:
SMITH 2,501,922 1.0061
JOHNSON 2,014,470 0.812
您可以使用
find_all
找到所有tr
标记,然后对每个tr
进行find
(仅给出第一个)td
。如果存在,则打印它:
for tr in soup.find_all('tr'):
td = tr.find('td')
if td:
print td
Iter通过tr,然后打印第一个td的文本:
for tr in bs4.BeautifulSoup(data).select('tr'):
try:
print tr.select('td')[0].text
except:
pass
或更短:
>>> [tr.td for tr in bs4.BeautifulSoup(data).select('tr') if tr.td]
[<td>SMITH</td>, <td>JOHNSON</td>, <td>WILLIAMS</td>, <td>JONES</td>, ...]
>>[tr.td表示bs4.BeautifulSoup(数据)中的tr。如果tr.td,则选择('tr')]
[史密斯、约翰逊、威廉姆斯、琼斯等]
相关职位:
>>> [tr.td for tr in bs4.BeautifulSoup(data).select('tr') if tr.td]
[<td>SMITH</td>, <td>JOHNSON</td>, <td>WILLIAMS</td>, <td>JONES</td>, ...]