从具有特定属性的HTML标记中提取数据

2024-09-02 23:01:26 发布

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

<tr bgcolor="#FFFFFF">
    <td class="tablecontent" scope="row" rowspan="1">
        <a href="http://netprofile-us2/netprofile/npIndex.do?cpyKey=80823">ZURICH AMERICAN INSURANCE COMPANY</a>
    </td>
    <td class="tablecontent" scope="row" rowspan="1">
        FARMERS GROUP INC (14523)
    </td>
    <td class="tablecontent" scope="row">
        znaf
    </td>
    <td class="tablecontent" scope="row">
        anhm
    </td>
</tr>

我有一个包含多个tr标记的HTML文档。我想从第一个td提取href链接,并从每个tr标签下的第三个td标记提取数据。如何做到这一点?在


Tags: 标记httptrclasstdrowhrefscope
2条回答

您可以使用css选择器nth-of-typetd中导航

这是一个样本“

soup = BeautifulSoup(html, 'html.parser')
a = soup.select('td:nth-of-type(1) a')[0]
href = a['href']
td = soup.select("td:nth-of-type(3)")[0]
text = td.get_text(strip=True)

您可以找到所有的tr元素,对它们进行迭代,然后对内部的td元素进行上下文特定的搜索,得到第一个和第三个:

for tr in soup.find_all('tr'):
    cells = tr.find_all('td')
    if len(cells) < 3:
        continue  # safety pillow

    link = cells[0].a['href']  # assuming every first td has an "a" element
    data = cells[2].get_text()

    print(link, data)

另外,根据您在HTML解析中要完成的工作,我通常发现^{}是将HTML表解析为dataframes并处理之后的数据帧的一种非常方便的方法,这是非常方便的数据结构。在

相关问题 更多 >