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

Scrapy爬取英国赛马网API失效,求反爬及URL哈希处理指导

问题描述

我此前通过Scrapy爬取英国赛马网站www.britishhorseracing.com的赛事(fixture)结果数据,目标链接示例为https://www.britishhorseracing.com/racing/results/fixture-results/#!/2024/702,需要提取每场比赛的距离变化数据,后续还需获取场地状况(going)信息。

在他人协助下,我找到可获取结果数据的API:https://api09.horseracing.software/bha/v1/fixtures/2024/702,并编写了如下Scrapy脚本循环爬取所需场次:

import scrapy
import json


class ApicrawlerSpider(scrapy.Spider):
    name = 'apicrawler'
    allowed_domains = ['britishhorseracing.com']
    start_urls = ['http://britishhorseracing.com/']
    allowed_domains = ['www.britishhorseracing.com']
    urls = 'https://api09.horseracing.software/bha/v1/fixtures?page='
    start_urls = []
    page_number1 = 4214
    while page_number1 <= 4220:
        page_number = str(page_number1)
        start_urls.append('https://api09.horseracing.software/bha/v1/fixtures?page=' + page_number)
        page_number1 +=1
    print(start_urls)
    def parse(self, response):
        data = json.loads(response.body)
        print(data)
        data2 = data['data']
        for data3 in data2:
            fixtureID = data3['fixtureId']
            fixtureYear = data3['fixtureYear']
            base_url = 'https://api09.horseracing.software/bha/v1/fixtures'
            races_url = f'{base_url}/{fixtureYear}/{fixtureID}/races'
            #going_url = f'{base_url}/{fixtureYear}/{fixtureID}/going'
            yield{
                'url' : races_url
            }

当前问题

  • 网站更新后,无论尝试爬取哪个API,均仅返回空白页面;虽能观察到API仍被网站调用,但无法直接访问。推测存在反爬保护(如Cookie验证或握手机制),但超出我的Scrapy技术能力,恳请指引解决方向。
  • 尝试直接爬取网页时,无法处理URL中的!#哈希片段,也希望得到相关解决建议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:22:05