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

使用Beautiful Soup抓取网页标题遇AttributeError问题求助

解决Beautiful Soup抓取职位标题的AttributeError问题

错误原因

你遇到的AttributeError: 'NoneType' object has no attribute 'text',是因为部分<li class="search-result__advert">节点中找不到带有link类的<a>标签,i.find("a",class_="link")返回None后调用.text触发报错。

正确代码实现

通过更精准的选择器直接定位蓝色标题元素,同时保证代码健壮性,示例如下:

from bs4 import BeautifulSoup
import requests

url = "https://www.prace.cz/hledat/?searchForm%5Blocality_codes%5D=&amp;searchForm%5Bprofs%5D=&amp;searchForm%5Bother%5D=Angli%C4%8Dtina&amp;searchForm%5Bemployment_type_codes%5D%5B%5D=201300001&amp;searchForm%5Bemployment_type_codes%5D%5B%5D=201300002&amp;searchForm%5Bemployment_type_codes%5D%5B%5D=201300004&amp;searchForm%5Bminimal_salary%5D=&amp;searchForm%5Beducation%5D=&amp;searchForm%5Bsuitable_for%5D=&amp;searchForm%5Bsearch%5D="
web = requests.get(url)
soup = BeautifulSoup(web.content, "html.parser")

# 用CSS选择器直接定位所有蓝色标题的a标签
title_elements = soup.select("li.search-result__advert h3.search-result__title a")

# 提取标题文本并整理为列表
job_titles = [elem.get_text(strip=True) for elem in title_elements]

# 输出结果
for title in job_titles:
    print(title)

补充说明

  • 使用soup.select()结合CSS选择器,能精准定位到目标标题元素,避免无效节点的干扰;
  • get_text(strip=True)可自动去除文本前后的空白字符,让结果更整洁;
  • 如果担心仍有无效节点,可增加非空判断:
job_titles = []
for elem in title_elements:
    if elem:
        job_titles.append(elem.get_text(strip=True))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:53:24