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

使用Python BS4提取网页各列顶级li的href遇到问题

解决网页抓取问题

问题分析

你要抓取的是每个col-sm-6列下的顶级分类(如Shoulders、Neck)的链接,但原代码会抓取到所有ul里的链接(包括子项),核心问题是没有限制查找范围到直接子元素,还存在变量名冲突。

修正后的代码

cut_url = "https://exrx.net/Lists/"
exrx = []

for div in soup.find_all('div', class_='col-sm-6'):
    # 只找当前div下的直接子ul,不递归查找嵌套的ul
    main_ul = div.find('ul', recursive=False)
    if main_ul:
        # 只找当前ul下的直接子li(顶级分类项),排除子ul里的li
        for li in main_ul.find_all('li', recursive=False):
            a_tag = li.find('a')
            # 确保a标签存在且包含href属性
            if a_tag and 'href' in a_tag.attrs:
                url = cut_url + a_tag['href']
                exrx.append(url)

关键修改点

  • 用recursive=False限制查找范围:先获取div的直接子ul,再获取该ul的直接子li,彻底排除嵌套的子项;
  • 重命名循环变量为div,避免覆盖外层的a标签变量;
  • 增加对a标签和href属性的存在性检查,防止运行时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:55:17