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
相关产品推荐
相关产品推荐

