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

如何使用BeautifulSoup4筛选href含指定字符串3080的链接并打印

筛选含指定字符串href链接的实现方案

你只需要修改BeautifulSoup的元素选择逻辑即可,有两种实现方式,推荐直接用CSS选择器规则一步筛选,修改后的完整代码如下:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time
import driver_functions

gpu = '3080'
url = f'https://www.alternate.de/listing.xhtml?q={gpu}'

options = webdriver.ChromeOptions()
options.add_argument('--headless')

if __name__ == '__main__':
    browser = webdriver.Chrome(options=options, service=Service('chromedriver.exe'))
    try:
        browser.get(url)
        time.sleep(2)
        html = browser.page_source
        soup = BeautifulSoup(html, 'html.parser')
        # 核心修改:CSS选择器直接匹配父容器下href包含3080的a标签
        gpu_list = soup.select('div.grid-container.listing a[href*="3080"]')
        for link in gpu_list:
            # 加兜底判断避免无href属性的标签报错
            if 'href' in link.attrs:
                print(link['href'])
        browser.quit()
    except:
        driver_functions.browserstatus(browser)

关键修改说明

  • 修正了原代码中select方法的错误用法:soup.select()的第一个参数是完整CSS选择器,类名规则需要直接写在选择器字符串中,不需要单独传class_参数。
  • 新增href属性匹配规则:CSS选择器语法[href*="目标字符串"]可以直接筛选出href属性包含指定字符串的元素,无需额外循环判断,执行效率更高。

如果更习惯在循环中做判断,也可以用第二种写法,把选择和筛选拆分:

# 先选中所有目标区域的a标签
gpu_list = soup.select('div.grid-container.listing a')
for link in gpu_list:
    # 取出href属性,判断是否包含3080
    href = link.get('href', '')
    if '3080' in href:
        print(href)

两种写法效果完全一致,可根据你的编码习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:08