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

使用BeautifulSoup获取disboard.org指定div内href链接时返回None的问题

解决Disboard服务器链接抓取返回None的问题

首先,咱们来揪出问题的根源:你定位的div.server-name元素本身并不包含href属性——这个链接属性其实是嵌套在该div内部的<a>标签上的。所以直接对div调用get('href'),自然会返回一串None。

修正后的代码示例

import requests
from bs4 import BeautifulSoup

def scrape(): 
    url = 'https://disboard.org/search?keyword=hacking'
    # 模拟浏览器请求,避免被反爬拦截(很多网站会拒绝无标识的请求)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    response = requests.get(url, headers=headers).content
    soup = BeautifulSoup(response, 'html.parser')
    areas = soup.find_all('div', class_='server-name')
    for area in areas:
        # 定位div内部的a标签,再提取href属性
        link_tag = area.find('a')
        if link_tag:  # 加个判断避免空指针报错
            print(link_tag.get('href'))

scrape()

额外优化建议

  1. 反爬适配:Disboard有基础反爬机制,直接用requests.get不带请求头很可能拿到空页面或验证码,所以一定要加上User-Agent模拟真实浏览器。
  2. 更高效的定位方式:你也可以直接定位带href的目标a标签,跳过div的中间步骤:
    links = soup.find_all('a', href=True, class_='server-name__link')
    for link in links:
        print(link['href'])
    
    这种写法更直接,也能减少不必要的节点遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:22:35