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

网站爬取问题:提交POST请求后无法获取租车搜索结果

解决租车网站爬取无结果问题

问题排查与修复方向

1. 修正参数拼写错误

你提交的data里存在明显拼写错误:subimt_search应为submit_search,这个错误会导致服务器无法识别搜索提交指令,直接返回初始页面。

2. 完善请求头与会话状态

网站通常会验证请求合法性,需确保请求头包含必要字段,同时通过Session维持会话(先访问主页获取Cookie):

  • 添加User-Agent模拟真实浏览器请求
  • 添加Referer指定请求来源页面
  • 先GET主页初始化会话,再提交POST搜索请求

3. 检查是否需要CSRF Token

部分网站会要求提交CSRF Token,可先从主页HTML中查找类似csrf-token的隐藏字段,提取后加入请求数据中。

修复后的代码示例

import requests
from bs4 import BeautifulSoup

# 目标URL
search_url = 'https://www.rent-a-car-crete.gr/car-search/'
home_url = 'https://www.rent-a-car-crete.gr'

# 完善请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
    'Referer': home_url
}

# 初始化会话
session = requests.Session()

# 先访问主页获取Cookie和可能的CSRF Token
home_res = session.get(home_url, headers=headers)
soup_home = BeautifulSoup(home_res.content, 'html.parser')

# 检查是否有CSRF Token,若有则添加到data中
# csrf_token = soup_home.find('input', {'name': 'csrf_token'}).get('value')

# 修正后的请求数据
data = {
    'pickup_location': '29',
    'return_to_pickup_location': '1',
    'return_location': '---',
    'pickup': '21.02.2024',
    'pickup_time': '10:00',
    'return': '22.02.2024',
    'return_time': '10:00',
    'promo_code': '',
    'age': '30+',
    'pickup_id': '',
    'return_id': '',
    'submit_search': '1',  # 修正拼写错误
    # 'csrf_token': csrf_token  # 如果网站要求则取消注释
}

# 提交POST请求
res = session.post(search_url, headers=headers, data=data)
soup = BeautifulSoup(res.content, 'html.parser')

# 解析车辆信息
cars = soup.find_all('h3', class_='carname')
print(f"找到车辆数量:{len(cars)}")
for car in cars:
    print(car.get_text(strip=True))

额外提示

  • 若仍无结果,可打开浏览器开发者工具,对比真实请求的所有参数和请求头,确保爬虫请求与浏览器请求完全一致
  • 注意网站反爬策略,避免请求频率过高导致IP被封禁

内容的提问来源于stack exchange,提问作者виталик панасюк

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:33:15