You need to enable JavaScript to run this app. 使用BeautifulSoup筛选含指定字符串的href链接及页面跳转问题
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup筛选含指定字符串的href链接及页面跳转问题

问题分析与代码修改方案

现有代码问题

现有代码的判断逻辑存在错误,if 'Archive.aspx?ADID=' in page.text 是判断整个页面文本是否包含目标字符串,只要页面存在该内容,所有a标签的循环都会触发打印逻辑,因此会输出全部链接。

正确筛选链接的代码修改

你需要把判断逻辑改为检查当前a标签的href属性是否包含目标关键词,同时过滤无href属性的a标签、补全相对路径为可直接访问的完整链接,修改后代码如下:

from bs4 import BeautifulSoup
import requests

base_url = "https://www.ci.atherton.ca.us"
url = "https://www.ci.atherton.ca.us/Archive.aspx?AMID=41"
key = '/Archive.aspx?ADID='

page = requests.get(url)    
soup = BeautifulSoup(page.text, 'html.parser')

target_links = []
# 加href=True参数自动过滤无href属性的a标签,避免后续取值报错
for link in soup.find_all('a', href=True):
    href_val = link.get('href')
    if key in href_val:
        # 拼接相对路径为完整访问链接
        full_link = base_url + href_val if href_val.startswith('/') else href_val
        target_links.append(full_link)
        print(full_link)

批量跳转访问目标链接的实现

拿到筛选后的链接列表后,循环遍历发送请求即可,建议加访问间隔避免触发站点反爬策略:

import time

for index, link in enumerate(target_links, 1):
    print(f"正在访问第{index}个链接:{link}")
    try:
        sub_page = requests.get(link, timeout=10)
        # 此处可添加你对当前子页面的解析、存储逻辑
        print(f"访问成功,页面状态码:{sub_page.status_code}")
        # 访问间隔可根据需求调整
        time.sleep(1)
    except Exception as e:
        print(f"访问{link}失败,错误信息:{e}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:06:02