【发布时间】:2021-03-07 08:06:36
【问题描述】:
我无法抓取依赖 Java 脚本的网站。我需要从 API 调用中获取学校列表,该 API 调用使用 XHR 请求发送到服务器,该请求获取 JSON 对象
我使用与 XHR 请求相同的请求标头,包括 cookie 值。不知道为什么它不起作用。它基本上给出了超时错误。附上来自 google chrome 请求标头(网络选项卡)的 Python 代码和屏幕截图以及来自 vs 代码终端的错误:
# -*- coding: utf-8 -*-
import scrapy
import json
class SchoolSpider(scrapy.Spider):
name = 'school'
# allowed_domains = ['www.directory.ntschools.net']
# start_urls = ['https://www.directory.ntschools.net/api/System/GetAllSchools/']
headers = {'Accept': 'application/json',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Cookie': 'BIGipServerdirectory.ntschools.net_443.app~directory.ntschools.net_443_pool=360972810.20480.0000',
'Host': 'directory.ntschools.net',
'Referer': 'https://directory.ntschools.net/',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
'X-Requested-With': 'Fetch'}
def start_requests(self):
yield scrapy.Request(url='https://www.directory.ntschools.net/api/System/GetAllSchools/',headers= self.headers,callback=self.parse)
def parse(self, response):
print(json.loads(response.body))
【问题讨论】:
标签: javascript python json scrapy xmlhttprequest