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

使用BeautifulSoup爬取会员网址时for循环仅返回单个结果求助

问题核心原因

你代码的逻辑错误出在两处:

  • 全局列表lst3重复累加内容:你把所有会员页的链接都追加到同一个lst3里,只有第一次循环第一个会员页时,索引108对应的是当前页的目标链接;后续循环时lst3已经包含了之前所有页面的链接,索引108的内容早已不是当前页的目标值,甚至可能出现索引越界报错,导致只输出1个结果就终止运行。
  • 硬编码索引取值逻辑极不稳定:固定取第108位链接的写法完全依赖页面当前的结构,只要页面调整、多/少一个链接,你拿到的结果就会出错。

修正方案

把最后一段循环逻辑调整如下:

url3 = lst2[4:18]
print(url3)
for x in url3:
    # 每次处理单个会员页时,单独初始化当前页的链接列表,不要用全局列表累加
    current_page_links = []
    html1 = urlopen(x).read()
    soup1 = BeautifulSoup(html1,"html.parser")
    for url4 in soup1.find_all('a'):
        href = url4.get('href')
        if not href:
            continue
        # 这里可以加筛选逻辑,比如排除mhi.org的站内链接,剩下的就是会员官网
        if 'mhi.org' not in href and href.startswith('http'):
            print(href)
            # 也可以存到数据库或者其他列表里
            break

如果你一定要用原有的索引逻辑,也至少要把lst3 = list()放到for x in url3的循环内部,每次循环都清空列表,避免内容累加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:24:01