如何用BeautifulSoup筛选Carsdirect上的2011 Highlander二手车数据?
筛选2011款Highlander二手车爬虫优化指导
你当前的代码已经能成功抓取丰田二手车的基础信息,但还没实现「仅筛选2011款Highlander」的功能,下面是简单易懂的优化步骤:
核心思路
在遍历每一辆车的信息时,增加判断逻辑:检查当前车辆的年份和车型是否匹配「2011 Highlander」,只输出符合条件的内容。
优化步骤
- 增加筛选判断:提取完整车型名称后,判断是否包含「2011」和「Highlander」关键词。
- 处理空值异常:先检查页面元素是否存在,避免因元素缺失导致报错。
修改后的完整代码
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
相关产品推荐
相关产品推荐

