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

如何不使用Selenium,用BeautifulSoup抓取需点击显示的汽车详情?

不用Selenium抓取售车网站详情的方案

你当前的代码直接从列表页找详情元素肯定拿不到数据——因为点击才加载的内容根本不会包含在列表页的HTML里,得换两种思路解决:

思路一:爬取车辆详情页

列表页里的每辆车都对应独立的详情页,先把这些详情页链接提取出来,再逐个请求详情页抓取数据:

修改后的完整代码

import headers
import requests
from bs4 import BeautifulSoup

page_num = 1
url = f"https://www.example.com/vehicles/cars?page={page_num}"

# 请求列表页
req = requests.get(url, headers=headers.get_headers()).text
soup = BeautifulSoup(req, "html.parser")

# 提取列表中的车辆行元素
def get_car_rows(soup):
    return soup.find_all('div', class_="feeditem table")

# 从车辆行里提取详情页链接
def get_car_detail_links(rows):
    detail_links = []
    for car in rows:
        # 找车辆对应的a标签(根据网站实际结构调整,有的可能在特定class里)
        link_tag = car.find('a', href=True)
        if link_tag:
            # 补全相对链接为完整URL
            full_link = "https://www.example.com" + link_tag['href']
            detail_links.append(full_link)
    return detail_links

# 逐个请求详情页,提取所需数据
def fetch_car_details(detail_links):
    for link in detail_links:
        try:
            req = requests.get(link, headers=headers.get_headers()).text
            soup = BeautifulSoup(req, "html.parser")
            # 提取里程(根据详情页实际HTML结构调整选择器)
            kilometrage = soup.find('div', id='accordion_wide_0')
            kilometrage_text = kilometrage.get_text(strip=True) if kilometrage else "未找到里程数据"
            print(f"详情页链接:{link}\n里程:{kilometrage_text}\n---")
        except Exception as e:
            print(f"请求详情页失败:{link},错误:{str(e)}")

# 执行流程
car_rows = get_car_rows(soup)
detail_links = get_car_detail_links(car_rows)
fetch_car_details(detail_links)

思路二:调用网站的API接口(更高效)

很多网站点击车辆详情时,是通过AJAX请求后端API获取数据,而非跳转页面。这种情况下直接抓API比爬详情页更快:

  1. 打开浏览器开发者工具的「网络」面板,切换到「XHR/fetch」标签
  2. 点击一辆车查看详情,观察新出现的请求,找到返回车辆详情的API(一般返回JSON格式)
  3. 分析API的请求参数(比如车辆ID),从列表页的车辆元素里提取对应参数(比如data-car-id属性)
  4. 直接拼接API URL,用requests请求获取JSON数据,不用解析HTML

比如列表页车辆元素有data-car-id="12345",API地址可能是https://www.example.com/api/car/detail?id=12345,请求后直接从返回的JSON里取里程、配置等数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:52:50