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

Web Scraping无数据输出求助:CSV仅含表头无内容

问题排查与解决方法

1. 补全请求头,避免被网站拦截

网站通常会通过请求头识别爬虫,默认requests的请求头带有明显的Python标识,容易被拦截。添加模拟浏览器的请求头:

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}
response = requests.get(url, headers=headers)

2. 验证元素选择器是否匹配当前页面结构

可能网站页面已更新,原类名c-search-card不再有效。按以下步骤确认:

  • 打开目标网页,按F12进入开发者模式
  • 用元素选择工具点击车辆卡片,查看其实际HTML标签和类名
  • 如果类名变化,修改soup.find_all("div", class_="c-search-card")中的类名参数

3. 检查页面是否为动态渲染

如果车辆数据是通过JavaScript动态加载的,requests只能获取静态HTML,无法拿到实际数据。解决方式:

  • 用开发者工具的「网络」标签,筛选XHR/fetch请求,找到加载车辆数据的接口,直接请求接口获取JSON数据解析
  • 或者使用selenium、playwright等工具模拟浏览器加载页面

4. 加调试输出定位问题

在代码中添加打印语句,逐步确认每一步是否正常:

def scrape_cars(url):
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}
    response = requests.get(url, headers=headers)
    print(response.status_code)  # 确认请求是否成功(200为正常)
    print(len(soup.find_all("div", class_="c-search-card")))  # 确认是否找到车辆卡片
    # 其余字段添加判断,避免找不到元素报错
    for car_div in soup.find_all("div", class_="c-search-card"):
        car = {}
        title_elem = car_div.find("h2")
        car["title"] = title_elem.text.strip() if title_elem else ""
        # 其他字段同理处理...
        cars.append(car)
    return cars

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:12:46