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

如何用BeautifulSoup筛选Carsdirect上的2011 Highlander二手车数据?

筛选2011款Highlander二手车爬虫优化指导

你当前的代码已经能成功抓取丰田二手车的基础信息,但还没实现「仅筛选2011款Highlander」的功能,下面是简单易懂的优化步骤:

核心思路

在遍历每一辆车的信息时,增加判断逻辑:检查当前车辆的年份和车型是否匹配「2011 Highlander」,只输出符合条件的内容。

优化步骤

  1. 增加筛选判断:提取完整车型名称后,判断是否包含「2011」和「Highlander」关键词。
  2. 处理空值异常:先检查页面元素是否存在,避免因元素缺失导致报错。

修改后的完整代码

import requests
from bs4 import BeautifulSoup

url = "https://www.carsdirect.com/used_cars/listings/toyota"
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")

results = soup.find(id="mainWrapper")
job_elements = results.find_all("div", class_="infoCell")

for job_element in job_elements:
    # 先检查所有需要的元素是否存在,避免报错
    model_element = job_element.find("p", class_="ymmListRowTitle")
    ymm_element = job_element.find("p", class_="ymmListRowTrim")
    miles_element = job_element.find("div", class_="mileLine")
    contact_element = job_element.find("div", class_="contactBlock")
    
    if all([model_element, ymm_element, miles_element, contact_element]):
        full_model = f"{model_element.text.strip()} {ymm_element.text.strip()}"
        # 判断是否符合2011款Highlander的筛选条件
        if "2011" in full_model and "Highlander" in full_model:
            print(full_model)
            print(miles_element.text.strip())
            print(contact_element.text.strip())
            print()

补充说明

  • all([...])用来确保所有需要的页面元素都存在,避免找不到元素时调用.text方法报错。
  • full_model拼接了车型标题和配置信息,能匹配2011款Highlander的不同配置版本。
  • 如果当前页面没有2011款Highlander的车源,后续可以尝试实现翻页抓取功能(新手可先从单页筛选入手)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 23:18:32