You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网页爬取:如何排除Button文本?以美国大学名称爬取为例

解决爬取大学名称时误抓按钮文本的问题

你的代码会抓取到“Add University”,是因为底部的<a>标签嵌套在<tr>内,且内部包含<button>元素,而大学名称的<a>标签是直接承载文本、没有嵌套按钮的。以下是两种无需手动删除或用limit参数的通用解决方案:

方案一:过滤包含按钮子元素的a标签

通过检查<a>标签是否包含<button>子元素,排除这类非目标链接:

import requests
from bs4 import BeautifulSoup

link = "https://www.4icu.org/us/a-z/"

html = requests.get(link).text

soup = BeautifulSoup(html, 'lxml')
for tr in soup.find_all('tr'):
    a_tag = tr.find('a')
    # 仅提取不包含button子元素的a标签文本
    if a_tag and not a_tag.find('button'):
        print(a_tag.get_text(strip=True))

方案二:精准定位大学所在的表格行

观察页面结构可知,大学名称所在的<tr>通常包含多个<td>(如排名、名称列),而按钮所在的行结构单一。通过判断<tr>内的<td>数量来过滤:

import requests
from bs4 import BeautifulSoup

link = "https://www.4icu.org/us/a-z/"

html = requests.get(link).text

soup = BeautifulSoup(html, 'lxml')
for tr in soup.find_all('tr'):
    tds = tr.find_all('td')
    # 大学行至少包含2个td(排名和名称)
    if len(tds) >= 2:
        name_a = tds[1].find('a')
        if name_a:
            print(name_a.get_text(strip=True))

方案优势

  • 方案一适配性强:只要是<a>标签嵌套<button>的场景都能生效,适合其他存在类似非目标按钮的网站。
  • 方案二稳定性高:基于页面表格的结构特征过滤,能更精准地定位目标内容,减少误抓取概率。

内容的提问来源于stack exchange,提问作者Austin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:27:32