如何在下面的html中在beautifulsoup中刮取span ID的文本?

2024-09-29 21:53:28 发布

您现在位置:Python中文网/ 问答频道 /正文

<div align="justify" style="text-align: center">
    <div>
        <table cellspacing="0" rules="all" border="1" id="ContentPlaceHolder1_grd_reminder" style="width:555px;border-collapse:collapse;">
            <tr>
                <th class="grdheading2" scope="col">Book</th>
                <th class="grdheading2" scope="col">Issue Date</th>
                <th class="grdheading2" scope="col">Submition Date</th>
            </tr>
            <tr>
                <td>
                    <span id="ContentPlaceHolder1_grd_reminder_Label1_0">Engineering Mechanics</span>
                </td>
                <td>
                    <span id="ContentPlaceHolder1_grd_reminder_Label2_0">17-Oct-2016</span>
                </td>
                <td>
                    <span id="ContentPlaceHolder1_grd_reminder_Label3_0">31-Oct-2016</span>
                </td>
            </tr>
            <tr>
                <td>
                    <span id="ContentPlaceHolder1_grd_reminder_Label1_1">ATB of Engineering Mathematics</span>
                </td>
                <td>
                    <span id="ContentPlaceHolder1_grd_reminder_Label2_1">17-Oct-2016</span>
                </td>
                <td>
                    <span id="ContentPlaceHolder1_grd_reminder_Label3_1">31-Oct-2016</span>
                </td>
            </tr>
        </table>
    </div>
</div>

我想提取文本Engineering mechanics及其对应的日期(text)31-Oct-2016和文本ATB of Engineering Mathematics及其对应的日期(text)31-Oct-2016。所有这些都位于span ID中。如何提取和打印它们?我对网页抓取还不熟悉


Tags: textdividtroctclasstdscope
1条回答
网友
1楼 · 发布于 2024-09-29 21:53:28

首先,您可以使用find_all()查找所有tr标记,使用loop可以使用find_all()查找每个tr中的所有span标记。这样,您就可以控制刮取的数据

html = '''<div align="justify" style="text-align: center">
                                            <div>
<table cellspacing="0" rules="all" border="1" id="ContentPlaceHolder1_grd_reminder" style="width:555px;border-collapse:collapse;">
<tr>
<th class="grdheading2" scope="col">Book</th><th class="grdheading2" scope="col">Issue Date</th><th class="grdheading2" scope="col">Submition Date</th>
</tr><tr>
<td>
<span id="ContentPlaceHolder1_grd_reminder_Label1_0">Engineering Mechanics</span>
</td><td>
<span id="ContentPlaceHolder1_grd_reminder_Label2_0">17-Oct-2016</span>
</td><td>
<span id="ContentPlaceHolder1_grd_reminder_Label3_0">31-Oct-2016</span>
                                                        </td>
</tr><tr>
<td>
<span id="ContentPlaceHolder1_grd_reminder_Label1_1">ATB of Engineering Mathematics</span>
</td><td>
<span id="ContentPlaceHolder1_grd_reminder_Label2_1">17-Oct-2016</span>
</td><td>
<span id="ContentPlaceHolder1_grd_reminder_Label3_1">31-Oct-2016</span>
</td>
</tr>
</table>
</div>
</div>'''

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')

trs = soup.find_all('tr')

for tr in trs:
    spans = tr.find_all('span')
    if spans:
        print 'title:', spans[0].text
        print 'date:',  spans[2].text

结果

title: Engineering Mechanics
date: 31-Oct-2016
title: ATB of Engineering Mathematics
date: 31-Oct-2016

相关问题 更多 >

    热门问题