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

使用Beautiful Soup 4如何筛选指定<li>标签组遍历职位列表?

解决Python官网职位抓取中
  • 标签匹配错误的问题
  • 问题原因

    你当前用soup.find_all('li')会抓取页面所有<li>标签,包括顶部导航、其他无关区域的标签,这些标签里没有你要的listing-company-name等class的span,导致job变量为None,后续访问job.a.text就会抛出异常。

    解决方案

    可以通过两种方式精准定位目标职位的<li>标签:


    方法1:先定位职位列表的父容器,再遍历内部
  • Python官网的职位列表都包裹在一个带有特定class的<ul>容器中,先找到这个容器再提取里面的<li>,就能避开无关标签:

    # 1. get website
    import requests
    import bs4
    
    url  = 'https://www.python.org/jobs/'
    headers = {
        "User-Agent":
        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
        }
    website = requests.get(url, headers=headers)
    
    soup = bs4.BeautifulSoup(website.content, 'lxml')
    
    # 先定位职位列表的父ul容器,再提取里面的li
    job_container = soup.find('ul', class_='job-list')
    jobs = job_container.find_all('li')
    
    for listing in jobs:
        # 2. get info
        job = listing.find('span', class_ = "listing-company-name")
        job_type = listing.find('span', class_ = "listing-job-type")
        job_location = listing.find('span', class_ = "listing-location")
    
        # 增加判断,避免个别职位信息缺失导致报错
        if job and job_type and job_location:
            # 3. display info
            print(f'Job Title: {job.a.text}')
            print(f'Company: {job.br.next_sibling.strip()}')
            print(f'Skills Needed: {job_type.text.strip()}')
            print(f'Location: {job_location.text.strip()}')
            print('---')
    

    方法2:直接抓取带有目标class的
  • 标签
  • 每个职位的<li>标签都带有特定的class(比如listing-with-company),直接通过class筛选:

    # 替换原来的jobs = soup.find_all('li')为:
    jobs = soup.find_all('li', class_='listing-with-company')
    
    # 后续循环逻辑和上面一致,同样建议增加非空判断
    

    额外提示

    • 增加非空判断(if job and job_type and job_location)可以避免个别职位信息缺失时抛出异常,让脚本更健壮。
    • 可以用.strip()去除文本两端的空白字符,输出更整洁。

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

    相关产品推荐
    方舟 Agent Plan

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

    最近更新时间:2026.07.12 23:54:56