[英]Unable to scrape Javascript website - API Calls / XHR request
我無法抓取依賴於 Java 腳本的網站。 我需要從使用獲取 JSON 對象的 XHR 請求發送到服務器的 API 調用中獲取學校列表
我使用與 XHR 請求相同的請求標頭,包括 cookie 值。 不知道為什么它不起作用。 它基本上給出了超時錯誤。 附加來自谷歌瀏覽器請求頭(網絡選項卡)的 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))
我想我現在知道我做錯了什么。 我使用了錯誤的帶有“www”的 api url,而原始 url 沒有。 我的錯。 感謝那些在這方面投入時間的人。 干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.