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

使用BeautifulSoup获取职位标题返回None,如何过滤无效结果?

问题解决方法

1. 过滤无效的None结果

提取职位标题前,先检查BeautifulSoup的find结果是否存在,避免直接调用.text导致报错或返回无效的None值。

2. 优化链接提取逻辑

原代码会抓取页面上所有含/en/job的链接,其中包含很多非职位列表的无效链接(比如导航栏、页脚链接),改为直接从职位列表容器中提取目标链接,减少无效请求。

3. 实现带序号的格式化输出

收集所有有效职位标题后,按序号逐个输出。

修改后的完整代码

from bs4 import BeautifulSoup
import requests
import time

job_name = "python"
url = f"https://www.jobstreet.com.my/{job_name}-jobs/"
html_text = requests.get(url).text
web_html = BeautifulSoup(html_text, "lxml")

# 存储有效职位标题
valid_positions = []

def get_position(link):
    # 加入延时,避免请求过于频繁被反爬
    time.sleep(1)
    page_url = f"https://www.jobstreet.com.my{link}"
    page_job = requests.get(page_url).text
    web_html2 = BeautifulSoup(page_job, "lxml")
    
    # 先查找元素,判断是否存在
    position_elem = web_html2.find("h1", class_="z1s6m00 _1hbhsw64y y44q7i0 y44q7il _1d0g9qk4 y44q7is y44q7i21")
    if position_elem:
        return position_elem.get_text(strip=True)  # 去除文本前后多余空格
    return None

# 定位职位列表容器,只提取里面的职位链接
job_list_container = web_html.find("div", class_="z1s6m00 _1hbhsw67i _1hbhsw66e _1hbhsw69q _1hbhsw68m _1hbhsw6n _1hbhsw65a _1hbhsw6ga _1hbhsw6fy")
if job_list_container:
    # 提取所有符合class的职位链接
    job_links = job_list_container.find_all('a', class_="jdlu994 jdlu996 jdlu999 y44q7i2 z1s6m00 z1s6m0f _1hbhsw6h", href=True)
    
    for link in job_links:
        temp_link = link.get('href')
        position = get_position(temp_link)
        if position:
            valid_positions.append(position)

# 按序号输出有效结果
for idx, pos in enumerate(valid_positions, start=1):
    print(f"{idx}. Position: {pos}")

关键修改说明

  • None过滤:在get_position函数中先判断元素是否存在,仅当存在时才返回文本,否则返回None;后续收集时只保留非None的有效结果。
  • 链接优化:直接从职位列表容器中提取目标class的链接,避免抓取无关页面,减少无效请求和None结果。
  • 反爬处理:加入time.sleep(1),避免短时间内大量请求被网站拦截。
  • 格式化输出:使用enumerate自动生成序号,匹配你需要的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:42:43