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

动态加载页面爬取:请求Shipspotting API返回404如何解决?

解决Shipspotting API请求404的问题

核心问题分析

你当前用GET请求/ssapi/gallery-search返回404,是因为该接口实际需要POST请求,且必须携带必要参数与完整请求头,同时接口返回JSON数据而非HTML,无需用BeautifulSoup解析。

修正步骤与代码示例

  1. 切换请求方法为POST:该接口仅接受POST请求,GET请求会直接返回404
  2. 携带必要请求参数:包括分类ID、页码、每页条数等,参数可通过浏览器开发者工具抓取实际请求内容获取
  3. 完善请求头:补充Accept、X-Requested-With等字段,同时先访问分类页面获取会话Cookie
  4. 解析JSON响应:直接处理接口返回的JSON结构数据,提取图片文件名

修正后的代码示例:

import requests
import time

cat_page = 'https://www.shipspotting.com/photos/gallery?category='

# 初始化会话,保持Cookie与请求头一致性
session = requests.Session()
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0",
    "Accept": "application/json, text/javascript, */*; q=0.01",
    "X-Requested-With": "XMLHttpRequest"
})

for cat_name, cat_id in cat_dict.items():
    cat_link = cat_page + str(cat_id)
    # 先访问分类页面,获取必要的会话信息与Cookie
    session.get(cat_link)
    
    # 构造POST请求参数,可根据需求调整页码和每页条数
    payload = {
        "category": str(cat_id),
        "page": 1,
        "limit": 24,  # 网站默认每页24条,可修改
        "sort": "latest",  # 排序方式,可选latest/most_viewed等
        "type": ""
    }
    
    try:
        response = session.post(
            'https://www.shipspotting.com/ssapi/gallery-search',
            data=payload,
            headers={"Referer": cat_link}
        )
        response.raise_for_status()  # 触发HTTP错误提示
        
        # 解析JSON响应并提取图片文件名
        data = response.json()
        for item in data.get("items", []):
            img_url = item.get("image")
            if img_url:
                img_filename = img_url.split("/")[-1]
                print(f"分类[{cat_name}]图片文件名:{img_filename}")
        
        # 控制请求频率,避免反爬
        time.sleep(1)
        
    except requests.exceptions.RequestException as e:
        print(f"分类[{cat_name}]请求失败:{str(e)}")

额外注意事项

  • 若遇到CSRF验证失败,可从分类页面HTML中提取csrf-token字段,添加到请求头的X-CSRF-Token中
  • 分页获取时,需循环递增page参数,直到返回的items为空,即所有页数据已获取完毕
  • 请勿过度频繁请求,避免触发网站反爬机制导致IP被限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:45:31